DataSet newds = new DataSet();
        newds = dsUser.Clone();
        int[] idarray;        if(ViewState["DataIdTable"]!=null)
        {
            idarray=(int[])ViewState["DataIdTable"];            DataRow[] row;
            for (int i = 0; i < idarray.Length; i++)
            {
                row=dsUser.Tables[0].Select("id="+idarray[i]+"");
                newds.Tables[0].Rows.Add((object[])row);                
            }
            GridView2.DataSource = newds;
            GridView2.DataBind();
        }
无法将类型为“System.Data.DataRow”的对象强制转换为类型“System.IConvertible”。不能在 Id 列中存储 <System.Data.DataRow>。所需类型是 Int32。

解决方案 »

  1.   

    int id= Convert.ToInt32(ds.Tables[0].Rows[0]["字段名"]);
    private DataTable GetNewDataTable(DataTable dt,string condition)
            {            
                DataTable newdt = new DataTable(); 
                newdt=dt.Clone();
                DataRow[] dr = dt.Select(condition); 
                for(int i=0;i<dr.Length;i++) 
                { 
                    newdt.ImportRow((DataRow)dr[i]);
                } 
                return newdt;
            }
      

  2.   

    可以 但是我有个问题 为什么我的不行?你这里newdt.ImportRow((DataRow)dr[i]); dr[i]已经是DataRow了就不用强转了吧
      

  3.   

    你的dsUser.Tables[0].Select("")返回的是DataRow[]数组,关于那个数组是没有直接添加的方法的,你错误的使用了newds.Tables[0].Rows.Add()方法,以为那个Object[]数组就是DataRow[]数组,那个Object[]数组是指一行中的每个值组成的数组,一次只能添加一行记录
      

  4.   

    你调用的 Add 方法是类型 DataRow 的成员函数,而 Add 方法中的参数是 DataTableRow 的,DataRow 的 Add 方法是不可以用 DataTableRow 类型的参数来调用的。所以有以上的错误。