是这样的,我有个会议管理系统,有个页面,是供秘书录入会议记录,同时进行任务分配.整个是一个可直接编辑的datagrid,样式如下:S/No      Description                    Assigned To & Due Date
1         A                                                             Add/Delete
       
1.1       AA.......                      A    01/09/2006                       
                                         B    02/09/2006                Add/Delete
                                         C    03/09/20061.2       AB.......                      B    30/08/2006
                                         C    31/08/2006                Add/Delete
                                         D    05/09/20062         B2.1       BA.......                      A    31/08/2006                Add/Delete2.2       BB.......                      C    29/08/2006                Add/Delete
意思是这样的,如果没有分配任务的就表示是会议记录.如果是任务的话,A,B,C表示任务被分配者,然后为相应的完成时间.这些都是由相应的textbox显示,这样可以直接修改.然后Assigned To这一栏有个link button,用来打开一个窗口,供选择相应的任务和对应的时间.后面的Add/Delete是按钮,点击Add就在此行下面一行直接添加一行空的内容,如果点击Delete,就直接删除这行...但是这些都不会直接update到数据库,只是存储在session里面,然后重新绑定,在datagrid下方有个submit按钮,点击以后统一提交,而且这些内容是有顺序的.就是下次进来的时候,还是得按照提交以前,画面的顺序一模一样.数据库结构如下:表A: Item
ItemID   MeetingID  SNo  Description  IsBold  IsItalic  IsUnderline  Type  SortingOrder
这个就用来存储上面的内容(ItemID是自增量,为主键,作为其它表的外键被引用)
表B: Task
TaskID   ItemID     UserID    DueDate   Status
这个存储任务的具体信息...(TaskID是自增量,为主键,作为其它表的外键被引用)我在load datagrid的时候,用一个dataset,存储两个表信息...
第一个就是 select * from Item where meetingid=@meetingid
第二个就是 select * from task where itemid in (select itemid from item where meetingid=@meetingid)然后在开始load页面的时候,给datagrid_ItemDataBound事件加处理内容,主要是Assigned To & DueDate...问题在于,如果我添加,修改,删除以后,最后点击submit按钮的时候,从那个dataset怎么一次性update数据库吗?各位帮帮忙,多谢多谢,非常感谢!!尤其是我PM的1岁小女儿得了很重的病,我想我得做好好我的东西,不能给人家添麻烦啊...拜托各位好心人帮帮忙啊.

解决方案 »

  1.   

    将DataSet临时保存在ViewState或Session中,最后一次性调用dataAdapter.Update方法更新到数据库
      

  2.   

    请问,如果我的dataset是上面的两句select的两个table,那么该怎么update呢?因为以前没有做过直接从dataset update到数据库,尤其是table里面的主键还是自增量的情况,拜托能不能给点例子参考啊非常感谢....
      

  3.   

    我看有建立table之间的relation之类的东东,这种情况也需要这样吗?拜托了,有没有大虾给个具体的例子啊,或者如果有大虾可以根据我的代码给个具体的解决办法再好不过了.多谢多谢了实在非常感谢哦
      

  4.   

    好麻煩呀,還是多表更新?
    單表的話,直接設置好DataSet的UpdateCommand就好了,然后直接調用Update方法更新到数据库
      

  5.   

    protected void AdapterUpdate()
            {
                System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection("连接字符串");
                System.Data.SqlClient.SqlCommand cm = new System.Data.SqlClient.SqlCommand();
                    
                cm.Connection = cnn;
                cm.CommandText = "select top 10 * from table1";
                System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(cm);            DataTable dt = new DataTable();
                da.Fill(dt);
                da.FillSchema(dt,System.Data.SchemaType.Mapped);//这是必须的,要载入数据表结构
                
                //下面插入多条数据
                for(int i=0;i<10;i++)
                {
                    DataRow newRow = dt.NewRow();
                    newRow[0] = 123;
                    newRow[1] = "abc";
                    //....
                    dt.Rows.Add(newRow);
                }
                //下面重新写回数据库
                System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da);//这句看起来没什么作用,但实际上很关键,如果没有这个就不能用da.Update方法
                cnn.Open();
                da.Update(dt);
                cnn.Close();            dt.AcceptChanges();
            }