【问题标题】:How to copy gridview content to a data table on postback如何在回发时将 gridview 内容复制到数据表
【发布时间】:2011-07-06 20:23:35
【问题描述】:

我的项目有一个 GridView 来显示一些信息。该 GridView 有一些 OnRowDataBound 处理来处理数据。我要做的是将生成的 GridView 复制到 DataTable 中,以便生成 CSV 文件。用户单击按钮时会生成 CSV。因此 GridView 出现在屏幕上并已填充并发生 PostBack。 GridView 没有在 PostBack 上重新绑定。推荐的方法是什么?这是我目前正在尝试的代码,但我最终得到了标题和空白行。调试确认 row.Cells[i].Text 为空,即使标题正确并且与我的 GridView 包含的行数相同。

DataTable dataTable = new DataTable("export");

foreach (DataControlField column in myGV.Columns)
{
    dataTable.Columns.Add(new DataColumn { ColumnName = column.HeaderText });
}

foreach (GridViewRow row in myGV.Rows)
{
    DataRow dataRow = dataTable.NewRow();
    for (int i = 0; i < row.Cells.Count; i++)
    {
        dataRow[myGV.Columns[i].HeaderText] = row.Cells[i].Text;
    }
}

【问题讨论】:

    标签: asp.net gridview datatable


    【解决方案1】:

    您需要使用绑定到 GridView 的数据对象,而不是 gridview。绑定后gridview中的数据没有hook。

    【讨论】:

    • +1 @William:附加说明:如果启用(或将启用)分页,则 DataTable 的 Rows 将仅包含当前可见的 PageSize 数量的 DataRows。因此,推荐的方法是在您要将数据导出为 CSV 时再次从数据库中加载数据。
    • 好的,谢谢。我的数据源(对象列表)具有我不需要的额外字段,并且 GridView OnDataBound 事件对数据进行了一些操作。如果我在回发时重新绑定 GridView,我可以访问 GridView 中的某种内部 DataTable 来制作我的电子表格吗?我想我的另一个选择是创建一个返回数据表的方法,然后将它用于我的电子表格和 GridView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2013-05-26
    • 2017-04-07
    相关资源
    最近更新 更多