2009-10-12 10 views
2

J'ai peuplé un DataTable avec un DataAdapter, mais je voudrais changer les valeurs dynamiquement pour toutes les lignes de cette colonne dans le DataTable. Comment vais-je faire cela?Comment modifier des données spécifiques dans une colonne datatable?

Voici mon code actuel:

SqlConnection conn = null; 
string sSQL = ""; 
string connString = "Datasourceetc"; 

sSQL = "SELECT TEST_ID FROM TEST_TABLE"; 

SqlDataAdapter sda = new SqlDataAdapter(sSQL, conn); 

DataTable dt = new DataTable(); 

sda.Fill(dt); 

foreach (DataRow row in dt.Rows) 
{ 
    dt.Columns["TEST_ID"] = "changed"; //Not changing it?! 
} 

GridView1.DataSource = dt; 

GridView1.DataBind(); 

Merci

+1

Il n'est pas chainging parce que vous ne l'avez pas rempli la table dans encore ... – CSharpAtl

Répondre

3

Tout semble bien au-dessus, sauf si itérer les lignes que vous pouvez accéder aux colonnes comme si ...

foreach (DataRow row in dt.Rows) 
{ 
    row["ColumnName"] = "changed"; //Not changing it?! 
} 
0

Vous devez remplir d'abord, puis changer!

SqlConnection conn = new SqlConnection(connString); 
string sSQL = "SELECT TEST_ID FROM TEST_TABLE"; 

DataTable dt = new DataTable(); 

SqlDataAdapter sda = new SqlDataAdapter(sSQL, conn); 

// fill the DataTable - now you should have rows and columns! 
sda.Fill(dt); 

// one you've filled your DataTable, you should be able 
// to iterate over it and change values 
foreach (DataRow row in dt.Rows) 
{ 
    row["TEST_ID"] = "changed"; //Not changing it?! 
} 

GridView1.DataSource = dt; 
GridView1.DataBind(); 

Marc

+0

dt.Columns ["TEST_ID"] = "changed"; Cela me donne une erreur: "System.Data.DataColumnCollection.this [chaîne]" ne peut pas être affecté à - il est en lecture seule – EverTheLearner

+0

ah, désolé, ne voit pas cela - bien sûr, lors de l'itération sur les lignes , vous devrez utiliser cet objet ** row ** pour définir ses valeurs de champs - voir ma mise à jour –

Questions connexes