Как изменить данные в Datatable в C # - PullRequest
2 голосов
/ 25 августа 2009

Я использую Visual Studio 2008 (Asp.net (c #)) и SQl Server 2005 У меня есть datatable ("dtReportList"), сгенерированный из запроса к базе данных, и затем я показываю datatable с помощью 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. Я хочу изменить данные 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 голос
/ 25 августа 2009

ваш код будет работать нормально, в чем проблема? другой вариант - написать метод расширения и использовать его при необходимости, что-то вроде этого

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...