没有数据库,直接从网页抓取的后台代码,用一个正则表达式,筛选出N条记录,现在数据在list(这就是数据)
WebRequest request = WebRequest.Create(wangzhi);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
string htmlcode;
string zongtext = null;
ArrayList list = new ArrayList();
htmlcode = reader.ReadToEnd();
string strregex = "(?<=(target=\"_blank\">)).*?(?=</a>)";
Regex r = new Regex(strregex, RegexOptions.IgnoreCase);
MatchCollection m = r.Matches(htmlcode);
——————————————————————————————————————————————以上是获取网页源代码 不用看,关键是下边
for (int i = 0; i < m.Count; i++)
{
zongtext += m[i].ToString();//取值
list.Add(zongtext);//添加listDataTable dt = new DataTable();//创建datatable
dt.Columns.Add("x", System.Type.GetType("System.String"));
dt.Rows.Add(new object[] {list[i].ToString(),"BBBB","CCCC"});
this.dataGridView1.DataSource = dt; 
 
运行结果为全部数据显示在第一行的第一列里
如何才能在第一列里多行显示 有多少数据 显示多少行?

解决方案 »

  1.   

     将zongtext += m[i].ToString(); 换成zongtext = m[i].ToString(); 在将
    DataTable dt = new DataTable();放到循环外面去
    你这样写的话每次循环都把 dt的值初始化了一次 
      

  2.   

    zongtext += m[i].ToString(); 这里你可以给字符串加上分割符号
    zongtext += m[i].ToString()+'#'; 
    for (int i = 0; i < m.Count; i++) 

    zongtext += m[i].ToString()+'#';
    }
    然后在字符串查找分割符号'#',有多少个,就证明有多少行再用SPLIT 方法将其以'#'分开存于一个string 数组里然后DATABLE 绑定该数组即可以 
      

  3.   

    泛型 搞定
     
    for (int i = 0; i < m.Count; i++)
    {                
    zongtext += m[i].ToString();
    list.Add(zongtext);
    test  t = new test();
    t.Code = m[i].ToString();
    tList.Add(t);

    this.dataGridView1.DataSource = tList;——————————————————————————————
    public class test
    {
        private string _code;
        public string Code { get { return _code; } set { _code = value; } }
    }