我正在尝试根据主网格视图(GridView)中值的%差异创建一个摘要GridView(GridView1)。它似乎正在创建摘要数据表,但是当我将它绑定到网格视图时它没有做任何事情。我不确定为什么?
DataTable datatable = getDataTable(sqlSelect, sqlFilterBy);
DataTable summaryTable = new DataTable();
if (datatable.Rows.Count > 0)
{
GridView.DataSource = datatable;
GridView.DataBind();
gridView_Container.Visible = true;
lblTableTitle.Text = "Run Information";
lblTableTitle.Visible = true;
IEnumerable<DataRow> runsQuery =
from run in datatable.AsEnumerable()
select run;
IEnumerable<DataRow> overRuns =
runsQuery.Where(p => p.Field<int>("% Difference") > 0);
foreach (DataRow row in overRuns)
{
summaryTable.ImportRow(row);
}
lblMessage.Text = summaryTable.Rows.Count.ToString();
GridView1.DataSource = summaryTable;
GridView1.DataBind();
}
我知道问题发生在foreach循环中,我将行导入新的summaryTable。 summaryTable中行数的计数返回正确的值。所以我确信他们在那里。当我尝试将GridView1绑定到原始数据表(用于GridView)中找到的行时,这也会绑定并显示gridview。所以这两个部分都是独立工作的(我认为),但是有些东西正在发生,而不是让我将summaryTable绑定到网格视图?
很抱歉,如果我的解释不明确,但我不确定是什么问题。这是我第一次玩动态查询,所以我很可能做了一些明显但错误的事情。
答案 0 :(得分:1)
我怀疑是因为你的目标没有架构。我建议克隆原始DataTable
以创建相同的模式(DataColumns等)。
summaryTable = runsQuery.Clone(); // copy schema.
foreach (DataRow row in overRuns)
{
summaryTable.ImportRow(row);
}
如果您使用 .Net 3.5 或更高版本,则可以使用CopyToDataTable
扩展程序。
DataTable summaryTable = overRuns.CopyToDataTable();