2009-08-25 11 views
2

J'utilise Visual Studio 2008 (Asp.net (C#)) et SQl Server 2005 J'ai un datatable ("dtReportList") généré à partir de la base de données requête, puis je montre le datatable par un gridview.
dtReportList = GetReportList (ID utilisateur); // Récupère les données de la base de données
GridView1.DataSource = dtReportList;
GridView1.DataBind();Comment modifier les données dans datatable dans C#

Les données de sortie de datatable seront ::

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

Je veux modifier le DataTable avant de l'assigner à DataSource de la grille. Je souhaite modifier les données ReportName de chaque ligne.

Je ne peux pas modifier la méthode GetReportList parce qu'elle est très utilisée, donc ma seule chance est de modifier le DataTable avant de l'utiliser.

Est-il possible de le faire? Comment puis-je le faire?

Je pensais faire quelque chose comme ça?

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

Merci encore pour votre aide.

Répondre

1

votre code fonctionnera normalement, quel est le problème? l'autre choix est d'écrire extension method et de l'utiliser en cas de besoin, quelque chose comme ça

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

Merci. Je n'obtenais pas les modifications apportées dans le DataTable (peut-être que je n'ai pas compilé correctement le code). J'aime plus votre code parce que je serai capable de l'utiliser partout si nécessaire. – SergioKastro

Questions connexes