【问题标题】:How do I add gridView rows to a dataTable?如何将 gridView 行添加到数据表?
【发布时间】:2013-07-08 18:02:00
【问题描述】:

这不起作用:

var originalFinalShowsTable = Session["finalShowsTable"] as DataTable;

DataTable finalShowsTable = new DataTable();

finalShowsTable = originalFinalShowsTable.Clone();

foreach (GridViewRow gvr in gvShows.Rows)
{
    if (gvr.RowType == DataControlRowType.DataRow)
    {
         if (((CheckBox) gvr.FindControl("cbSelect")).Checked)
         {
               finalShowsTable.Rows.Add(gvr);
         }
     }
}

它所做的是将文本"System.Web.UI.WebControls.GridViewRow" 放入数据表的第一列。

【问题讨论】:

    标签: c# asp.net gridview datatable


    【解决方案1】:

    试试这个:

    DataTable finalShowsTable = new DataTable();
    
        finalShowsTable = originalFinalShowsTable.Clone();
    
        foreach (GridViewRow gvr in gvShows.Rows)
        {
            if (gvr.RowType == DataControlRowType.DataRow)
            {
                 if (((CheckBox) gvr.FindControl("cbSelect")).Checked)
                 {
                        DataRow dr= finalShowsTable.NewRow();
                         for (int i = 0; i < gvr.Cells.Count - 1; i++)
                         {
                             dr[i] = row.Cells[i].Text;
                         }
    
                         finalShowsTable.Rows.Add(dr);
                 }
             }
        }
    

    【讨论】:

    • FOR 循环的索引超出范围问题。我不能做 gvr.Cells.Count 因为我没有从 gridView 中获取所有内容。我只抓取选定的内容。
    • gvr 单元格计数是指当前行中的单元格。我认为您正在获取索引超出范围异常,因为您在 gridview 中有一个额外的列(复选框)。尝试更改 dr[i] = row .Cells[i+1].Text;比较数据表和网格中的列数
    • 我实际上不得不做 gvr.Cells.Count - 1,这成功了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多