我的项目中有一个场景我有一个网格视图和提交按钮,它生成动态行,并且有一个图像按钮Edit
,它编辑这些行,这些行首先与datatable绑定,当我们点击save时按钮所有反映数据表中的更改保存在数据库中没有Update
按钮
问题:
如何将以前编辑过的行保存到DataTable
以及哪个事件?
Plz帮助其紧急
答案 0 :(得分:0)
在您的linkButton上放置一个CommandName和CommandArgument,并将您的保存代码放在ItemCommand()中,以便该GridView应该可以正常工作。 哦,Command名称应该是“Update”,而Argument可以是该行的Id。
答案 1 :(得分:0)
声明一个数据表,向其添加列以表示我想要从网格保存到数据库中的表的所有数据。 循环遍历网格中的行,从要保存的每个单元格中获取数据,并将其添加到数据表中的每个列。 使用数据表在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 (GridViewRow gvr in GridView.Rows) { drMT = dtMealTemplate.NewRow(); drMT["MealTemplateID"] = gvr.Cells[0].text; drMT["WeekNumber"] = 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 = new SqlDataAdapter(cmd); SqlCommandBuilder cmb = new SqlCommandBuilder(sa); SqlTransaction oTrans; SqlConnection oConn = new SqlConnection(GetConnectionString()); DataSet ds = new 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 = new SqlDataAdapter(cmd); cmb = new SqlCommandBuilder(sa); sa.MissingSchemaAction = MissingSchemaAction.AddWithKey; cmd.Transaction = oTrans; sa.Fill(ds, "yourtablename"); DataRow drNew; int x = 0; foreach (DataRow dr in dtMealsData.Rows) { if (Int32.Parse(dr["MealDetailsID"].ToString()) == 0) { drNew = ds.Tables[0].NewRow(); drNew["MealTemplateID"] = dr["MealTemplateID"]; drNew["WeekNumber"] = dr["WeekNumber"]; drNew["DayOfWeek"] = dr["DayOfWeek"]; ds.Tables[0].Rows.Add(drNew); } } sa.Update(ds.Tables["yourtablename"]); oTrans.Commit(); oConn.Close(); }