2009-08-25 10 views
2

Visual Studio 2008(Asp.net(c#))とSQl Server 2005を使用しています データベースクエリから生成されたデータテーブル( "dtReportList")を持っていて、グリッドビューで
dtReportList = GetReportList(UserId); //データベースからデータを取得する
GridView1.DataSource = dtReportList;
GridView1.DataBind();データテーブルのC#でデータテーブル内のデータを変更するには

出力データは、::私はグリッドのDataSourceに割り当てる前のDataTableを変更したい

ReportId ReportName  CreatedDate 
1   DummyReport1 21/08/2009 
2   DummyReport2 21/08/2009 
3   DummyReport4 21/08/2009 

になります。 各行のReportNameデータを変更したいとします。

GetReportListメソッドは頻繁に使用されるため変更できません。使用する前にDataTableを変更することしかできません。

できますか? どうすればいいですか?

私はこのようなことをやろうとしていましたか?

dtReportList = GetReportList(UserId); //get data from database 
foreach(DataRow report in dtReportList.Rows) 
{ 
    Guid reportId = new Guid(report["ReportId"].ToString()); 
    string reportTitle = GetReportTitle(conn, reportId, UserId, 
     GetReportLanguage(reportId)); 
    report["ReportName"] = reportTitle; 
} 
GridView1.DataSource = dtReportList; 
GridView1.DataBind(); 

もう一度お世話になります。

答えて

1

あなたのコードは正常に動作しますが、何が問題なのですか?もう1つの選択はextension methodと書いて、必要なときにこのようなものを使用することです。

public static class ReportsExtensions 
{ 

    public static GetChangedList(this ReportsTable tbl) 
    { 
     foreach(DataRow report in tbl) 
     { 
      Guid reportId = new Guid(report["ReportId"].ToString()); 
      string reportTitle = GetReportTitle(conn, reportId, UserId, GetReportLanguage(reportId)); 
      report["ReportName"] = reportTitle; 
     } 
    } 
} 
GridView1.DataSource = dtReportList.GetChangedList(); 
GridView1.DataBind(); 
+0

ありがとう。 私はDataTableの変更を取得していませんでした(多分私はコードを正しくコンパイルしていませんでした)。 私はあなたのコードがもっと好きです。なぜなら、必要に応じてどこでも使えるからです。 – SergioKastro