protected DataTable ckb_Select()
    {
        DataTable dt = new DataTable();
        DataRow dr = null;
        for (int i = 0; i < this.GVDansoumanger.Rows.Count; i++)
        {
            CheckBox ckb = (CheckBox)this.GVDansoumanger.Rows[i].Cells[0].FindControl("ckSelect");
            if (ckb.Checked)
            {
                
                dr = dt.NewRow();
                dr["DangerousSourceCode"] dr[1]= GVDansoumanger.Rows[i].Cells[1].Text;
                dr["Stairdepname"] = GVDansoumanger.Rows[i].Cells[2].Text;
                dr["Twaindepname"] = GVDansoumanger.Rows[i].Cells[3].Text;
                dr["threedepname"] = GVDansoumanger.Rows[i].Cells[4].Text;
                dr["DangerousSourceName"] = GVDansoumanger.Rows[i].Cells[5].Text;
                dr["DSLName"] = GVDansoumanger.Rows[i].Cells[6].Text;
                dr["WorkingName"] = GVDansoumanger.Rows[i].Cells[7].Text;            }   
        }
        dt.Rows.Add(dr);
        return dt;
    }
这段代码我想实现,把一个GridView中的数据通过CheckBox的选择,从新导出一个DataTable中。
错误提示:DangerousSourceCode,Stairdepname没找到表的列。
如何写才正确!

解决方案 »

  1.   

    我GridView中绑定的字段,就是那5个!DangerousSourceCode等
      

  2.   

    dr["DangerousSourceCode"] dr[1]= GVDansoumanger.Rows[i].Cells[1].Text;
    这是什么。。
      

  3.   

    那个是我调试的,复制错了!正解是:   dr["DangerousSourceCode"]=GVDansoumanger.Rows[i].Cells[1].Text;
      

  4.   

       DataTable dt = new DataTable();之后 dt.Columns 中的定义是空的,你必须添加 7 个定义,例如:   dt.Columns.Add("DangerousSourceCode",typeof(string));不过说个题外话:我倒是觉得你何必要把数据装入DataTable?服务器多干这么多事为了什么呢?
      

  5.   

            DataTable dt = ds.Tables[0];
            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    //你要替换的项
                }
            }
      

  6.   

    总有人说asp.net速度慢,可是我们一看他们的程序,多干、反复干好多好多事情,程序肯定会慢10倍。但是只是看一点,还真不知道为什么只能那样设计。只是感觉那是很稚嫩的设计,成熟的程序几乎不会有那种(除非不得已必须跟别人很重要的组件集成在一起)。
      

  7.   

    一切都是导出Excel惹的货,功能其实早就弄晚了,客户要求太严格!所以必须改!
    GridView中全选后要导出所有数据,不是当前页,但还要保证你选几个导出几个!
    我弄了好几天,GridView不可能把所有页一下全选,
    没办法,只好给客户弄个假象,让他点全选,然后我只不过从新去查询下数据库,然后在绑定别的控件输出Excel, 单选也是这样,所以就弄成现在这样!有什么好办法么?
      

  8.   

     DataTable dt = new DataTable();
    你只声明了内存表,内存表里有那些列呢
    你没有添加.就真接把选中的赋值给某例,所以会报Stairdepname没找到表的列。 先把在dgv里选中的行所有的例添加到内存表吧DataColumns dc=new DataColumns("列名称")
    dt.Columns.add(dc);
    依此类推,或写循环添加