Es ist möglich, die DataRow zu manipulieren, bevor Sie sie an GridView binden. Auf diese Weise können Sie Änderungen an den Daten programmgesteuert vornehmen, ohne die SQL-Abfrage selbst zu ändern.
Zuerst erstellen Sie eine Kopie der DataRow. Dann fügen Sie zusätzliche Zeilen hinzu oder ändern die Werte von Spalten in den Zeilen. Dann rufen Sie EndEdit() und AcceptChanges() auf der DataRow auf, um sicherzustellen, dass Änderungen übernommen werden. Dann fügen Sie die geänderte Zeile mit ImportRow in die Tabelle des DataSet zurück, ändern den RowState in Added und rufen schließlich die Update-Methode des TableAdapter mit DataRow auf.
Hier ist ein Beispielcode aus meinen Notizen:
try
{
DataSet objDataSet = new DataSet();
SqlConnection objSqlConnection = new SqlConnection();
objSqlConnection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
string strSQL = "SELECT * FROM table WHERE OrderDate = '2008.10.21' AND OrderSequence = 1;";
SqlDataAdapter objSqlDataAdapter = new SqlDataAdapter(strSQL, objSqlConnection);
objSqlDataAdapter.Fill(objDataSet);
// Create a copy of the DataRow
DataRow drOrders = objDataSet.Tables[0].Rows[0];
// Change the value of some columns to avoid duplicate primary key
drOrders["OrderDate"] = DateTime.Now.ToString("yyyy.MM.dd");
drOrders["OrderSequence"] = 15;
// Call EndEdit() and AcceptChanges() on the DataRow to ensure changes are applied
drOrders.EndEdit();
drOrders.AcceptChanges();
// Add the modified row back into the DataSet's table using ImportRow
objDataSet.Tables[0].ImportRow(drOrders);
// Change the RowState to Added
objDataSet.Tables[0].Rows[1].SetAdded();
// Call a TableAdapter's Update method using the DataRow
dsOrderTableAdapters.DetailFareTableAdapter dfta = new dsOrderTableAdapters.DetailFareTableAdapter();
dfta.Update(objDataSet.Tables[0].Rows[1]);
lblMessage.Text = "The row has been copied!";
}
catch (Exception ex)
{
lblErrorMessage.Text = ex.ToString();
}
Ich verstehe die Frage nicht. –