从gridview更新数据表

时间:2012-04-18 07:58:13

标签: c# asp.net

我的项目中有一个场景我有一个网格视图和提交按钮,它生成动态行,并且有一个图像按钮Edit,它编辑这些行,这些行首先与datatable绑定,当我们点击save时按钮所有反映数据表中的更改保存在数据库中没有Update按钮

问题:

如何将以前编辑过的行保存到DataTable以及哪个事件?

Plz帮助其紧急

2 个答案:

答案 0 :(得分:0)

在您的linkBut​​ton上放置一个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(); 
    }