プロジェクトにシナリオがあり、動的な行を生成するグリッドビューと送信ボタンがあり、Edit
それらの行を編集する画像ボタンがあり、これらの行は最初にデータテーブルにバインドされ、保存ボタンをクリックすると、データテーブルの保存に変更が反映されますデータベースにはUpdate
ボタンがありません
質問:
以前に編集した行をとに保存するにはどうすればよいDataTable
ですか?
Plzはその緊急を助けます
CommandName と CommandArgument を linkButton に配置し、保存コードを ItemCommand() に配置して、その GridView が機能するようにします。ああ、コマンド名は「Update」のようなものにする必要があり、引数はその行の ID にすることができます。
データテーブルを宣言し、列を追加して、グリッドからDBのテーブルに保存するすべてのデータを表します。グリッド内の行をループし、保存する各セルからデータを取得して、データテーブルの各列に追加します。データテーブルを使用して、DB のテーブルに一括挿入します。
DataTable dtMealTemplate = new DataTable(); dtMealTemplate.Columns.Add("MealTemplateID", Type.GetType("System.Int32")); dtMealTemplate.Columns.Add("WeekNumber", Type.GetType("System.Int32")); dtMealTemplate.Columns.Add("DayOfWeek", Type.GetType("System.String")); foreach (GridView.Rows の GridViewRow gvr) { drMT = dtMealTemplate.NewRow(); drMT["MealTemplateID"] = gvr.Cells[0].text; drMT["週番号"] = gvr.Cells[1].text; drMT["DayOfWeek"] = gvr.Cells[2].Text; dtMealTemplate.Rows.Add(drMT); } public void InsertMealsTemplate(int iMealTemplateID, DataTable dtMealsData) { SqlCommand cmd = new SqlCommand(); SqlDataAdapter sa = 新しい SqlDataAdapter(cmd); SqlCommandBuilder cmb = new SqlCommandBuilder(sa); SqlTransaction oTrans; SqlConnection oConn = 新しい SqlConnection(GetConnectionString()); DataSet ds = 新しい DataSet(); oConn.Open(); cmd = oConn.CreateCommand(); oTrans = oConn.BeginTransaction(); cmd.Connection = oConn; cmd.Transaction = oTrans; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM YOURTABLENAME WHERE 1 = 1"; sa = 新しい SqlDataAdapter(cmd); cmb = 新しい SqlCommandBuilder(sa); sa.MissingSchemaAction = MissingSchemaAction.AddWithKey; cmd.Transaction = oTrans; sa.Fill(ds, "テーブル名"); DataRow drNew; 整数 x = 0; foreach (dtMealsData.Rows の DataRow dr) { if (Int32.Parse(dr["食事の詳細ID"].ToString()) == 0) { drNew = ds.Tables[0].NewRow(); drNew["食事テンプレートID"] = dr["食事テンプレートID"]; drNew["週番号"] = dr["週番号"]; drNew["曜日"] = dr["曜日"]; ds.Tables[0].Rows.Add(drNew); } } sa.Update(ds.Tables["yourtablename"]); oTrans.Commit(); oConn.Close(); }