我想把dataset过滤的结果绑定到gridview上,可是过滤返回的结果是datarow数组,该怎么绑定呀? 难道还要再执行循环,把datarow加到datatable中吗?

解决方案 »

  1.   

    遍历下datarow数组吧,然后循环中datatable.rows.add(datarow)
      

  2.   

    DataTable dt = ds.Tables[0];
    dt.Select(过滤条件);
    GridView1.DataSourse=dt;
    GridView1.DataBind();
      

  3.   

    谢谢 anison(影舞者),这样做可以的。如果绑定以后,datatable又要恢复到.select前的数据,怎么办?
      

  4.   

    因为针对这个datatable会有不同的过滤条件,绑定到不同的Gridview上面
      

  5.   

    DataTabledt=datatable.copy()用另一个保存原来的内容!
      

  6.   

    用RowFilter属性过滤DataTable dt = ds.Tables[0];
    // 过滤只显示id=10的显示
    dt.DefaultView.RowFilter = "id=10";
    GridView1.DataSourse=dt.DefaultView;
    GridView1.DataBind();如果要恢复到以前的数据,就设置dt.DefaultView.RowFilter = "";
    就OK了
      

  7.   

    Filter用法:
    private void GetChildProClassSelect(int parentid,DataSet ds)
    {
    DataView dv = new DataView(ds.Tables[0]);
    dv.RowFilter = "PARENT_ID=" + parentid;
    foreach(DataRowView myDRV in dv)
    {
    if(parentid==0)
    ProClassSelect += "<optgroup label='" + myDRV["PRO_NAME"].ToString() + "'>";
    string tmp="";
    //for(int i=1;i<(int)myDRV["DEPTH"];i++)
    //{
    // tmp+=" ";
    //}
    if(parentid>0)
    ProClassSelect += "<option value=" + myDRV["PRO_CODE"].ToString() + ">" + tmp + myDRV["PRO_NAME"].ToString() + "</option>";

    if((int)myDRV["CHILD_NUM"]>0)
    {
    GetChildProClassSelect((int)myDRV["PRO_CLASS_ID"],ds);
    }
    if(parentid==0)
    ProClassSelect += "</optgroup>";
    }

    }