2016-05-31 6 views
0

メイングリッドビュー(GridView)からの値の差異に基づいて、サマリーGridView(GridView1)を作成しようとしています。それは要約データテーブルを作成しているようだが、グリッドビューにバインドするときは何もしない。なぜわからないのですか?ImportRowを使用した後にDataTableがGridViewにバインドされない

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(); 

    } 

私はこの問題は、私は新しいsummaryTableに行をインポートするforeachループで発生知っています。 summaryTableの行数のカウントは正しい値を返します。私は彼らがそこにいることを確信しています。 GridView1を元のデータテーブル(GridViewで使用されている)にある行にバインドしようとすると、GridViewもバインドされて表示されます。両方の部分が独立して動作していますが、グリッドビューにsummaryTableをバインドさせない何かが起きていますか?

申し訳ありませんが私の説明は明らかではないが、私は何が間違っているのか完全には分かりません。これは動的なクエリで遊んだのは初めてのことですので、私は明らかに間違ったことをしました。

答えて

1

ターゲットにスキーマがないと思われます。元のDataTableを複製して同じスキーマ(DataColumnsなど)を作成することをお勧めします。

summaryTable = runsQuery.Clone(); // copy schema. 
foreach (DataRow row in overRuns) 
{ 
    summaryTable.ImportRow(row); 
} 

あなたは.NET 3.5以上を使用している場合、あなたはCopyToDataTable拡張子を使用することができます。

DataTable summaryTable = overRuns.CopyToDataTable(); 
+0

あなたは正しく感謝の意を疑った! – Danrex

関連する問題