DataSet里的记录可以更新,但是用
DataAdapter.update(dataset);
并未更新到数据库,这是为什么?

解决方案 »

  1.   

    datagrid批量更新数据,我的源码:
    String Con = ConfigurationSettings.AppSettings["con"];
    SqlConnection con = new SqlConnection(Con);‘连接数据库
    SqlDataAdapter da=new SqlDataAdapter();
    da.SelectCommand = new SqlCommand("select * from mudanka1", con);
    SqlCommandBuilder cb=new SqlCommandBuilder(da);
    DataSet ds=new DataSet();
    da.Fill(ds,"table1");
    DataTable table=ds.Tables["table1"];
    table.PrimaryKey=new DataColumn[]{table.Columns["id"]};‘设置主键
    foreach (DataGridItem di in DataGrid1.Items)’循环批量更新
    {
    if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem) 
    {
    DataRow dr=ds.Tables["table1"].Rows.Find(DataGrid1.DataKeys[di.ItemIndex]);
    dr["yesno"]=((DropDownList)di.FindControl("DropDownList2")).SelectedItem.ToString();
    dr["problem"]=((TextBox)di.FindControl("txt_problem")).Text;
    dr["findtime"]=((TextBox)di.FindControl("txt_findtime")).Text;
    dr["timelimit"]=((TextBox)di.FindControl("txt_timelimit")).Text;
    dr["zhihang"]=Request.QueryString["zhihang"];
    dr["wangdian"]=Request.QueryString["wangdian"];
    }
    }
    this.DataGrid1.EditItemIndex=-1;
    da.Update(ds,"table1");还有最关键的一步就是,点选你的datagrid,必须将它的属性datakeyfield填写上你的表主键。
      

  2.   

    你是否设置DataAdapter的其他command,参看
    http://blog.csdn.net/Knight94/archive/2006/04/15/664530.aspx
      

  3.   

    已经解决了
    原因可能有二:
    一,是因为运行时,自动将数据库复制到bin文件夹下面,是连接的问题
    二,权限的问题
    谢谢二位