几处瑕疵

1.正则表达式不适合,单价必须为整数

2.合并列处默认为4,无法配置。

基础类定义:

/// <summary>
/// 商品信息类
/// </summary>
public class MerchandiseInfo
{/// 商品编号private string m_ID;public string ID{get { return m_ID; }set { m_ID = value; }}/// 商品名称private string m_Name;public string Name{get { return m_Name; }set { m_Name = value; }}/// 商品数量private int m_Number;public int Number{get { return m_Number; }set { m_Number = value; }}/// 商品分类private string m_TID;public string TID{get { return m_TID; }set { m_TID = value; }}/// 金额private decimal m_Amount;/// 金额public decimal Amount{get { return m_Amount; }set { m_Amount = value; }}/// 单价private decimal m_Price;public decimal Price{get { return m_Price; }set { m_Price = value; }}/// 备注private string m_Remark;public string Remark{get { return m_Remark; }set { m_Remark = value; }}/// 全赋值构造函数public MerchandiseInfo(string pName, decimal pPrice, int pNumber, string pTID, decimal pAmount, string pRemark){m_Name = pName;m_TID = pTID;m_Amount = pAmount;m_Price = pPrice;m_Number = pNumber;m_Remark = pRemark;}
}/// <summary>
/// 商品类型类
/// </summary>
public class MerchandiseType
{/// 商品类型名称private string m_Name;public string Name{get { return m_Name; }set { m_Name = value; }}///  商品类型IDprivate string m_ID;public string ID{get { return m_ID; }set { m_ID = value; }}/// 全参函数public MerchandiseType(string pID, string pName){m_ID = pID;m_Name = pName;}
}/// <summary>
/// 表格Cell模式创建类
/// </summary>
public class TableCellModle
{private TableCell tablecell = new TableCell();private TextBox textbox = new TextBox();private HiddenField hiField = new HiddenField();private DropDownList ddl; public TableCellModle(){ }/// <summary>/// 具有下拉列表的Cell/// </summary>/// <param name="tID">控件ID</param>/// <param name="tPoint">字体大小</param>/// <param name="twidth">控件宽度</param>/// <param name="tHeight">控件高度</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <param name="MTypeList">下拉框数据源</param>/// <returns></returns>public TableCell CreateCellddl(string tID, int tPoint, int twidth, int tHeight, int lwidth, int lHeight, ref IList<MerchandiseType> MTypeList){ddl = new DropDownList();ddl.DataSource = MTypeList;ddl.DataTextField = "Name";ddl.DataValueField = "ID";ddl.DataBind();ddl.AutoPostBack = false;ddl.ID = tID;ddl.Font.Size = FontUnit.Point(tPoint);ddl.Width = twidth;ddl.Height = tHeight;ddl.BorderWidth = 0;tablecell.Controls.Add(ddl);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;return tablecell;}/// <summary>/// 创建表头/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <returns></returns>public TableCell CreateHeadCell(string tID, string tText, int lwidth, int lHeight){textbox.ID = tID;textbox.Text = tText;textbox.Font.Size = FontUnit.Point(13);                textbox.Height = 20;textbox.BorderWidth = 0;textbox.Style.Add("text-align", "center");textbox.BackColor = System.Drawing.Color.Transparent;textbox.ReadOnly = true;tablecell.Controls.Add(textbox);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;tablecell.VerticalAlign = VerticalAlign.Middle;tablecell.Font.Size = FontUnit.Point(13);tablecell.Font.Bold = true;tablecell.HorizontalAlign = HorizontalAlign.Center;tablecell.BorderColor = System.Drawing.Color.Black;tablecell.BackColor = System.Drawing.Color.Transparent;return tablecell;}/// <summary>/// 创建头Cell(可以配置颜色)/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <param name="pColor">颜色</param>/// <returns></returns>public TableCell CreateHeadCellColor(string tID, string tText, int lwidth, int lHeight, System.Drawing.Color pColor){textbox.ID = tID;textbox.Text = tText;textbox.Font.Size = FontUnit.Point(13);textbox.Width = 150;textbox.Height = 20;textbox.BorderWidth = 0;textbox.BackColor = pColor;textbox.ReadOnly = true;tablecell.Controls.Add(textbox);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;tablecell.VerticalAlign = VerticalAlign.Middle;tablecell.Font.Size = FontUnit.Point(13);tablecell.Font.Bold = true;tablecell.HorizontalAlign = HorizontalAlign.Center;tablecell.BorderColor = System.Drawing.Color.Black;tablecell.BackColor = pColor;return tablecell;}/// <summary>/// 创建可读写Cell/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="tPoint">字体大小</param>/// <param name="twidth">控件宽度</param>/// <param name="tHeight">控件高度</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <param name="pReadOnly">是否只读</param>/// <param name="pAutoPostBack">是否自动回调</param>/// <returns></returns>public TableCell CreateCellBeRead(string tID, string tText, int tPoint, int twidth, int tHeight, int lwidth, int lHeight, bool pReadOnly, bool pAutoPostBack){textbox.ID = tID;textbox.Text = tText;textbox.Font.Size = FontUnit.Point(tPoint);textbox.Width = twidth;                textbox.Height = tHeight;textbox.BorderWidth = 0;textbox.ReadOnly = pReadOnly;textbox.AutoPostBack = pAutoPostBack;tablecell.Controls.Add(textbox);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;return tablecell;}/// <summary>/// 创建隐藏文本/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <returns></returns>public TableCell CreateCellHiField(string tID, string tText, int lwidth, int lHeight){hiField.ID = tID;hiField.Value = tText;tablecell.Controls.Add(hiField);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;return tablecell;}/// <summary>/// 同时 创建带隐藏域和文本的Cell/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="tPoint">字体大小</param>/// <param name="twidth">控件宽度</param>/// <param name="tHeight">控件宽度</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <param name="pTaxRate">pTaxRate</param>/// <param name="pMID"></param>/// <param name="pPrice"></param>/// <param name="pPDID"></param>/// <param name="pID"></param>/// <returns></returns>public TableCell CreateCell(string tID, string tText, int tPoint, int twidth, int tHeight, int lwidth, int lHeight, string pTaxRate, string pMID, string pPrice, string pPDID, string pID){textbox.ID = tID;textbox.Text = tText;hiField.ID = tID + "TaxRate";hiField.Value = pTaxRate;textbox.Font.Size = FontUnit.Point(tPoint);textbox.Width = twidth;textbox.Height = tHeight;textbox.BorderWidth = 0;textbox.ReadOnly = true;textbox.AutoPostBack = true;tablecell.Controls.Add(hiField);tablecell.Controls.Add(textbox);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.BorderWidth = 1;return tablecell;}/// <summary>/// ///创建可改变行数的隐藏域和文本的Cell/// </summary>/// <param name="tID">控件ID</param>/// <param name="tText">控件文本</param>/// <param name="tPoint">字体大小</param>/// <param name="twidth">控件宽度</param>/// <param name="tHeight">控件高度</param>/// <param name="lwidth">Cell宽度</param>/// <param name="lHeight">Cell高度</param>/// <param name="ColumnSpan">合并列数</param>/// <returns></returns>public TableCell CreateCellChangeColumn(string tID, string tText, int tPoint, int twidth, int tHeight, int lwidth, int lHeight, int ColumnSpan){hiField = new HiddenField();textbox.ID = tID;textbox.Text = tText;textbox.Font.Size = FontUnit.Point(tPoint);textbox.Width = twidth;textbox.Height = tHeight;textbox.BorderWidth = 0;textbox.ReadOnly = true;textbox.AutoPostBack = true;tablecell.Controls.Add(textbox);tablecell.Width = lwidth;tablecell.Height = lHeight;tablecell.ColumnSpan = ColumnSpan;tablecell.BorderWidth = 1;tablecell.HorizontalAlign = HorizontalAlign.Center;tablecell.VerticalAlign = VerticalAlign.Middle;tablecell.BorderColor = System.Drawing.Color.Black;return tablecell;}
}/// <summary>
/// 自定义表格类
/// </summary>
public class TableList
{/// <summary>/// 生成商品表格/// </summary>/// <param name="Table1">表格</param>/// <param name="rows">表格行数</param>/// <param name="MTypeList">表格中下拉框数据源</param>public void CreateTable(Table Table1, int rows, ref IList<MerchandiseType> MTypeList){//如果行数小于(0)则返回if (rows < 0)return;TableRow tr3 = new TableRow();tr3.Cells.Add(new TableCellModle().CreateHeadCellColor("cells1" + Table1.Rows.Count, "商品名称", 150, 15, System.Drawing.Color.Azure));tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells2" + Table1.Rows.Count, "单价", 150, 15));tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells3" + Table1.Rows.Count, "入库数量", 75, 15));tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells4" + Table1.Rows.Count, "商品类型", 150, 15));tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells5" + Table1.Rows.Count, "金额", 150, 15));tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells6" + Table1.Rows.Count, "备注", 150, 15));//  tr3.Cells.Add(new TableCellModle().CreateHeadCell("cells7" + Table1.Rows.Count, "隐藏域", 150, 15));Table1.Rows.Add(tr3);for (int i = 0; i < rows; i++){TableRow tr = new TableRow();tr.Cells.Add(new TableCellModle().CreateCellBeRead("cells1" + Table1.Rows.Count, "", 10, 75, 15, 75, 15, false, false));tr.Cells.Add(new TableCellModle().CreateCellBeRead("cells2" + Table1.Rows.Count, "", 10, 75, 15, 75, 15, false, false));tr.Cells.Add(new TableCellModle().CreateCellBeRead("cells3" + Table1.Rows.Count, "", 10, 75, 15, 75, 15, false, true));//ref 作用是传地址,节省空间,tr.Cells.Add(new TableCellModle().CreateCellddl("cells4" + Table1.Rows.Count, 10, 75, 15, 75, 15, ref MTypeList));tr.Cells.Add(new TableCellModle().CreateCellBeRead("cells5" + Table1.Rows.Count, "", 10, 75, 15, 75, 15, true, false));tr.Cells.Add(new TableCellModle().CreateCellBeRead("cells6" + Table1.Rows.Count, "", 10, 75, 15, 75, 15, false, false));tr.Height = 15;Table1.Rows.Add(tr);tr.VerticalAlign = VerticalAlign.Middle;tr.Font.Size = FontUnit.Point(13);tr.Font.Bold = true;tr.HorizontalAlign = HorizontalAlign.Center;tr.BorderColor = System.Drawing.Color.Black;}TableRow tr1 = new TableRow();tr1.Cells.Add(new TableCellModle().CreateCellChangeColumn("cellCount", "合计", 13, 150, 25, 150, 25, 2));tr1.Cells.Add(new TableCellModle().CreateCellChangeColumn("cellSum", "", 13, 150, 25, 150, 25, 0));tr1.Height = 20;Table1.Rows.Add(tr1);tr1.VerticalAlign = VerticalAlign.Middle;tr1.Font.Size = FontUnit.Point(13);tr1.Font.Bold = true;tr1.HorizontalAlign = HorizontalAlign.Center;tr1.BorderColor = System.Drawing.Color.Black;}/// <summary>/// 计算总价/// </summary>/// <param name="oPrice">单价</param>/// <param name="oNumber">数量</param>/// <returns></returns>public string SumAmount(string oPrice, string oNumber){decimal price = 0;int number = 0;string amonut = null;if (string.IsNullOrEmpty(oPrice)){ price = 0; }else{ price = Convert.ToDecimal(oPrice); }if (string.IsNullOrEmpty(oNumber)){ number = 0; }else{ number = Convert.ToInt32(oNumber); }amonut = Convert.ToString(price * number);return amonut;}/// <summary>/// 重写表格宽度/// </summary>/// <param name="Table1">表格</param>public void ReWrite(Table Table1){for (int r = 1; r < Table1.Rows.Count-1; r++){for (int c = 0; c < Table1.Rows[r].Cells.Count; c++){if ((Table1.Rows[r].Cells[c].FindControl("cells" + (c + 1) + r)).GetType() != typeof(TextBox)) { continue; }TextBox tb = ((TextBox)Table1.Rows[r].Cells[c].FindControl("cells" + (c + 1) + r));TableCell tc = ((TableCell)Table1.Rows[r].Cells[c]);string text = tb.Text;int coun1 = 0, textLength;ArrayList itemList = new ArrayList();CharEnumerator CEnumerator = text.GetEnumerator();Regex regex = new Regex("^[\u4E00-\u9FA5]{0,}$");while (CEnumerator.MoveNext()){if (regex.IsMatch(CEnumerator.Current.ToString(), 0))itemList.Add(CEnumerator.Current.ToString());coun1 = itemList.Count;}textLength = coun1 * 16 + (text.Length - coun1) * 8;if (textLength > 150){tb.Width = 250;}if (textLength > 250){tb.Height = 30;tb.TextMode = TextBoxMode.MultiLine;}}}}
}

表格实现:

protected void Page_Load(object sender, System.EventArgs e)
{// 在此处放置用户代码以初始化页面showEWETableList();
}//入库单的详细列表table
private TableList tablelist = new TableList();
//入库的详细List
private IList<MerchandiseInfo> MerchandiseList = new List<MerchandiseInfo>();private void showEWETableList()
{Table1.Rows.Clear();Table1.Controls.Clear();IList<MerchandiseType> MTypeList = new List<MerchandiseType>();MTypeList.Add(new MerchandiseType("1", "忌食品"));MTypeList.Add(new MerchandiseType("2", "毒奶粉"));MTypeList.Add(new MerchandiseType("3", "伪劣饮料"));if (string.IsNullOrEmpty(txtNumber.Text) || !Regex.IsMatch(txtNumber.Text, @"^\d+$")){this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language = javascript>alert('错误,在行数输入非数字字符!')</script>");return;}int rows = Convert.ToInt32(txtNumber.Text);tablelist.CreateTable(Table1, rows, ref MTypeList);for (int i = 1; i <= rows; i++){//为每一个数量表加入事件((TextBox)Table1.Rows[i].Cells[2].FindControl("cells3" + i)).TextChanged += new EventHandler(tablelist_TextChanged);}
}
//输入数目改变事件
protected void tablelist_TextChanged(object sender, EventArgs e)
{//计算总价tablelist.ReWrite(Table1);Sumtablelist();
}
//计算总和
private void Sumtablelist()
{decimal amount = 0; // 订单明细一条记录数据求和decimal sum = 0;   //   对订单明细所有记录金额求总和int rows = Convert.ToInt32(txtNumber.Text);for (int i = 1; i < rows + 1; i++){string strNumber = ((TextBox)Table1.Rows[i].Cells[2].FindControl("cells3" + i)).Text;string strPrice = ((TextBox)Table1.Rows[i].Cells[1].FindControl("cells2" + i)).Text;#regionif (string.IsNullOrEmpty(strPrice) || string.IsNullOrEmpty(strNumber))if (string.IsNullOrEmpty(strNumber))break;if (!Regex.IsMatch(strPrice, @"^\d+$")){this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language = javascript>alert('错误,在价格中输入非数字字符!')</script>");((TextBox)Table1.Rows[i].Cells[1].FindControl("cells2" + i)).Text = "0";strNumber = "0";break;}if (!Regex.IsMatch(strNumber, @"^\d+$")){this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language = javascript>alert('错误,在数量中输入非数字字符!')</script>");((TextBox)Table1.Rows[i].Cells[2].FindControl("cells3" + i)).Text = "0";strNumber = "0";break;}#endregionstring Name = ((TextBox)Table1.Rows[i].Cells[0].FindControl("cells1" + i)).Text;if (!string.IsNullOrEmpty(Name)){string strSum = tablelist.SumAmount(strPrice, strNumber);((TextBox)Table1.Rows[i].Cells[4].FindControl("cells5" + i)).Text = "¥" + strSum;amount = Convert.ToDecimal(strSum);sum += amount;}}//最后一行是统计总价格.((TextBox)Table1.Rows[rows + 1].Cells[1].FindControl("cellSum")).Text = "¥" + Convert.ToString(sum);this.btnRead.Enabled = true;
}

数据读取

//读取数据
protected void btnRead_Click(object sender, EventArgs e)
{//因为第0行是标题所以要从第1行开始for (int i = 1; i < Convert.ToInt32(txtNumber.Text) + 1; i++){string Name = ((TextBox)Table1.Rows[i].Cells[0].FindControl("cells1" + i)).Text;string Price = ((TextBox)Table1.Rows[i].Cells[1].FindControl("cells2" + i)).Text;string strNumber = ((TextBox)Table1.Rows[i].Cells[2].FindControl("cells3" + i)).Text;string MType = ((DropDownList)Table1.Rows[i].Cells[3].FindControl("cells4" + i)).SelectedValue;string Amount = ((TextBox)Table1.Rows[i].Cells[4].FindControl("cells5" + i)).Text.Replace("¥", string.Empty);//把¥替换string Remark = ((TextBox)Table1.Rows[i].Cells[5].FindControl("cells6" + i)).Text;if (!(strNumber.Equals("0") || string.IsNullOrEmpty(strNumber) || string.IsNullOrEmpty(Price) ||string.IsNullOrEmpty(Amount) || string.IsNullOrEmpty(Name) || string.IsNullOrEmpty(MType))){MerchandiseInfo MInfo = new MerchandiseInfo(Name, Convert.ToDecimal(Price), Convert.ToInt32(strNumber), MType, Convert.ToDecimal(Amount),Remark);MerchandiseList.Add(MInfo);}}if (MerchandiseList == null || MerchandiseList.Count < 1)return;///输出所有的商品..for (int i = 0; i < MerchandiseList.Count; i++){Response.Write(" 商品名称:" + MerchandiseList[i].Name + " 单价:" + MerchandiseList[i].Price + " 入库数量: " + "商品类型ID:" + MerchandiseList[i].TID + " 金额: " +MerchandiseList[i].Amount + " 备注:" + MerchandiseList[i].Remark + "<br>");}
}

页面代码

<div><fieldset style="width: 80%; text-align: center;"><legend>                                            <asp:Label ID="lblMessage" runat="server" Text="附件信息"></asp:Label></legend>­<table border="0" cellpadding="0" cellspacing="0" width="80%"><tr><td align="right" nowrap="nowrap" style="height: 18px"> 附件种类:</td><td align="left" nowrap="nowrap" style="height: 18px"><asp:TextBox ID="txtNumber" runat="server" BorderWidth="0" Text="0" AutoPostBack="True"></asp:TextBox></td><td align="right" nowrap="nowrap" style="height: 18px"></td><td align="left" nowrap="nowrap" style="height: 18px"></td><td align="right" nowrap="nowrap" style="height: 18px"></td></tr>                                                        </table>                                                    <asp:Table ID="Table1" runat="server" BorderColor="black" BorderWidth="1" CellPadding="0"CellSpacing="0" Width="80%" EnableViewState="False"></asp:Table></fieldset><table border="0" cellpadding="0" cellspacing="0" width="80%"><tr><td style="width: 10%"></td><td align="left" style="text-align: center"><asp:Button ID="btnRead" runat="server" Height="33px" Text="读取数据" OnClick="btnRead_Click"  /></td></tr></table>
</div>

效果:

ASP.Net 自定义行数,可读取填入数据的页面表格相关推荐

  1. C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组

    转自:http://hi.baidu.com/ctralt/blog/item/cde79fec87f841302697911c.html fstream提供了三个类,用来实现c++对文件的操作.(文 ...

  2. [C#]统计文本文件txt中的行数(快速读取)

    快速统计文本文件中的行数( StreamReader.ReadLine() ): 测试代码如下: 1 //读取txt文件中总行数的方法 2 public static int requestMetho ...

  3. python怎么读取txt文件并统计其字数-python计算文件的行数和读取某一行内容的实现方法...

    一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了: count = len(o ...

  4. python读取文件某一行-python计算文件的行数和读取某一行内容的实现方法

    一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了: count = len(o ...

  5. python读取某一行-python计算文件的行数和读取某一行内容的实现方法

    一.计算文件的行数 最简单的办法是把文件读入一个大的列表中,然后统计列表的长度.如果文件的路径是以参数的形式filepath传递的,那么只用一行代码就可以完成我们的需求了: count = len(o ...

  6. java读取csv文件行数_java读取巨大csv的行数

    我有超过700K行的巨大csv行数.我必须解析那些csv的行和do ops.我想通过使用线程来做到这一点.我第一次尝试做的很简单.每个线程都应该有唯一的csv行.我只有有限的行数只能读到3000.我创 ...

  7. python读取txt文件的行数_python读取txt文件符合条件的行数-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python 关系网图 pyth ...

  8. java读取csv文件的行数_JMeter 读取 CSV 文件数据行数

    在用 JMeter 做测试时,经常需要调用外部 CSV 文件的数据到脚本中使用,如果我们想对 CSV 文件中数据的行数进行统计,这个怎么做呢? 针对上面表格的数据,我们一起来学习一下如何统计数据行数吧 ...

  9. 二级指针读取文件(显示行数、读取、释放内存)

    1.读取的文件 test.txt 2.c代码 duQu01.c #include <stdlib.h> #include <stdio.h> #define _CRT_SECU ...

最新文章

  1. java基础-java反射机制
  2. 浏览器外部署Silverlight更新检查失败的原因及对策
  3. Spring boot集成spring-boot-starter-data-jpa环境搭建
  4. 第二百零一天 how can I坚持
  5. mybatis 调用 oracle函数_MyBatis之启动分析(一)
  6. redis java 视频教程_redis从入门到精通视频教程【50讲全】
  7. 6月全球浏览器份额之争:霸主IE份额持续降至54%
  8. 大数据技术原理与应用----大数据概述
  9. QIIME 2教程. 01简介和安装Introduction Install(2021.2)
  10. incaseformat病毒分析
  11. python绘图在图中添加标记
  12. flash读取程序 msp430_MSP430 flash的操作
  13. jupyter notebook的安装与启动
  14. DOM系列之排他思想
  15. Apk脱壳圣战之---脱掉“梆梆加固”的保护壳
  16. HW - VCN 介绍
  17. 一维离散小波变换原理和代码实现
  18. XML和Dom4j、正则表达式
  19. Selenium WebDriverException unable to discover open pages
  20. 练手小项目,爬取3DM图片

热门文章

  1. 【Algorithm】藏在Ranking中的ELo
  2. lucene全文检索与数据库检索的区别
  3. Spark之cache ,persist ,checkpoint ,广播变量及其案例 : 根据IP地址(浏览器访问日志获取) / 经度纬度定位地理位置案例(7)
  4. 照片误删了还能恢复吗?误删照片恢复教程
  5. 更改tomcat文件导致项目无法启动记录org.apache.jasper.JasperException
  6. 带注释的参考线python可视化_python中怎么在等高线图中添加参考线?
  7. 李开复新书《AI·未来》
  8. android中帧布局效果,布局之FrameLayout(帧布局)详解
  9. 电话招生技巧开场白---转载 (二)
  10. 混迹过超多开源社区的黄之鹏老师,为你解码AI开源的技术应用与未来趋势