web-dev-qa-db-fra.com

Comment éditer une ligne dans le datatable

J'ai créé une table de données. Il a 3 colonnes Product_id, Product_name et Product_price

    Datatable table= new DataTable("Product");

    table.Columns.Add("Product_id", typeof(int));
    table.Columns.Add("Product_name", typeof(string));
    table.Columns.Add("Product_price", typeof(string));

    table.Rows.Add(1, "abc", "100");
    table.Rows.Add(2, "xyz", "200");

Maintenant, je veux rechercher par index et mettre à jour cette ligne.

par exemple pour.

Je veux changer la valeur de Product_name column en "cde" qui a la valeur Product_id column: 2.

17
folk

Vous devez d’abord trouver une ligne avec id == 2, puis changer le nom pour:

foreach(DataRow dr in table.Rows) // search whole table
{
    if(dr["Product_id"] == 2) // if id==2
    {
        dr["Product_name"] = "cde"; //change the name
        //break; break or not depending on you
    }
}

Vous pouvez également essayer ces solutions:

table.Rows[1]["Product_name"] = "cde" // not recommended as it selects 2nd row as I know that it has id 2

Ou:

DataRow dr = table.Select("Product_id=2").FirstOrDefault(); // finds all rows with id==2 and selects first or null if haven't found any
if(dr != null)
{
    dr["Product_name"] = "cde"; //changes the Product_name
}
54
Tafari

Vous pouvez trouver cette ligne avec

DataRow row = table.Select("Product_id=2").FirstOrDefault();

et le mettre à jour

row["Product_name"] = "cde";
16
idursun

Essayez la méthode SetField:

table.Rows[rowIndex].SetField(column, value);
table.Rows[rowIndex].SetField(columnIndex, value);
table.Rows[rowIndex].SetField(columnName, value);
7
Mohamed Islam Fares

Si votre ensemble de données est trop volumineux, commencez par sélectionner les lignes requises par Select (). cela arrêtera de continuer la boucle.

DataRow[] selected = table.Select("Product_id = 2")

Ensuite, parcourez un sous-ensemble et mettez à jour

    foreach (DataRow row in selected)
    {
        row["Product_price"] = "<new price>";
    }
6
e03050

Vous pouvez parcourir le DataTable comme ci-dessous et définir la valeur

foreach(DataTable thisTable in dataSet.Tables)
{
    foreach(DataRow row in thisTable.Rows)
    {
        row["Product_name"] = "cde";
    }
}

OR

thisTable.Rows[1]["Product_name"] = "cde";

J'espère que cela t'aides

2
Zahir Khan

Essayez ceci, je ne suis pas sûr à 100%

        for( int i = 0 ;i< dt.Rows.Count; i++)
        {
           If(dt.Rows[i].Product_id == 2)
           {
              dt.Rows[i].Columns["Product_name"].ColumnName = "cde";
           }
        }
2
Rahul