如何修改C#中数据表中的数据

时间:2009-08-25 07:17:41

标签: c# datatable

我正在使用Visual Studio 2008(Asp.net(c#))和SQl Server 2005 我有一个数据表(“dtReportList”)从数据库查询生成,然后我通过gridview显示数据表。
dtReportList = GetReportList(UserId); //从数据库中获取数据
GridView1.DataSource = dtReportList;
GridView1.DataBind();

datatable的输出数据为::

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

我想在修改DataTable之前将其分配给Grid的DataSource。 我想修改每一行的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 个答案:

答案 0 :(得分: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();