if(radioButton1.Checked)  
                                   {  
                                               delete=  "DELETE  FROM  t1  WHERE  "+  "    "+delete1+  "    "+  "OR  "+  "    "+delete2;  
                                   }  
                                   else  if(radioButton2.Checked)  
                                   {  
                                               delete=  "DELETE  FROM  t1  WHERE  "+  "    "+delete1+  "    "+  "AND  "+  "    "+delete2;  
                                   }  
                                   form1.dataSet11.AcceptChanges();  
 
                                   try  
                                   {  
                                               form1.sqlConnection1.Open();  
                                               form1.sqlDeleteCommand1=new  SqlCommand(delete,form1.sqlConnection1);  
                                               form1.sqlDeleteCommand1.ExecuteNonQuery();  
                                               form1.dataSet11.Clear();  
                                               form1.sqlConnection1.Close();  
                                   }  
                                   catch(Exception  ee)  
                                   {MessageBox.Show(ee.Message);}

解决方案 »

  1.   

    用你在dataGrid上显示数据的代码再执行一边,当插入或者删除操作完成后。其实原因很简单,你dataGrid的数据来自相对静态的dataset,而非实时的与数据库的活动连接,所以你对数据库所做的任何修改,当然不可能立即在dataset中获得更新,所以也不可能在dataGrid中体现出来。
    另外,你的数据库语句最好这么写
    try{
       myConnection.Open();
    }catch(Exception E_SQLERROR)
    {
       MessageBox.Show(E_SQLERROR.ToString());
    }finally
    {
       myConnection.Close();  // 关键在这里,道理自己去探索一下吧
    }
      

  2.   

    bear说的队,要重新BindData一次。
      

  3.   

    呵呵!
    你的示例程序一定是在关闭的事件中进行的统一修改
    在前面的修改没有进入数据库
    只是dataset的修改
    !我书上的示例程序就是这么写的,《ADO。net高级编程》
      

  4.   

    你是不是理解有误,delete=  "DELETE  FROM  t1 WHERE"+" "+delete1+" "+"OR "+" "+delete2;  
    form1.sqlConnection1.Open();  
    form1.sqlDeleteCommand1=new SqlCommand(delete,form1.sqlConnection1);  
    form1.sqlDeleteCommand1.ExecuteNonQuery();  
    form1.dataSet11.Clear();  
    form1.sqlConnection1.Close();  这难道没有更改数据库么?
      

  5.   

    你是不是理解有误,delete=  "DELETE  FROM  t1 WHERE"+" "+delete1+" "+"OR "+" "+delete2;  
    form1.sqlConnection1.Open();  
    form1.sqlDeleteCommand1=new SqlCommand(delete,form1.sqlConnection1);  
    form1.sqlDeleteCommand1.ExecuteNonQuery();  
    form1.dataSet11.Clear();  
    form1.sqlConnection1.Close();  这难道没有更改数据库么?
      

  6.   

    Private Sub DataGrid1_DeleteCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
            Dim index As Integer        index = e.Item.ItemIndex        DsCategories1.employee.Rows(index).Delete()        ' Calls a SQL statement to update the database from the dataset
            OleDbDataAdapter1.Update(DsCategories1)        ' Takes the DataGrid row out of editing mode
            DataGrid1.EditItemIndex = -1        DataGrid1.DataBind()
        End Sub用OleDbDataAdapter吧
      

  7.   

    DataSet建立的是一种"断开式"数据库,给人感觉就是修改数据库或者增加数据操作完成后,数据库没有变化,其实操作都是保存在DataSet对象里面,而DataSet对象在内存中只是一个临时数据库,如果在关闭程序前不将其操作保存到数据库,刚全部编辑随DataSet消失了!
      

  8.   

    DataSet建立的是一种"断开式"数据库,给人感觉就是修改数据库或者增加数据操作完成后,数据库没有变化,其实操作都是保存在DataSet对象里面,而DataSet对象在内存中只是一个临时数据库,如果在关闭程序前不将其操作保存到数据库,刚全部编辑随DataSet消失了!
    ///
    所以你要更新和DataSet相关联的SqlDataAdapter(或OleDbDataAdapter),比如:
    mySqlDataAdapter.Update(mydataSet);
      

  9.   

    各位大下,可能我把问题没说清楚,我现在还是有很大的麻烦,希望各位指点。。
    我的问题是:我在执行插入,修改后,我 sqlDataAdapter1.Fill (dataSet11.t1);
    然后我的dataGrid的数据都会正确的显示出来,因为我的DATAGRID的数据源是dataSet11.t1
    //////////////////
    但是我在执行删除后,我 sqlDataAdapter1.Fill (dataSet11.t1);
    我的dataGrid的数据不可以正确的显示出来
    如果我把我的应用程序关了,再打开,再浏览我的DATAGRID的时候,数据就正确了,
    ///////我不懂为什么删除就不可以像插入,修改那样正确的出来数据,还要重开程序,
    /////哎,,,,希望指点啊
    在线等待。
      

  10.   

    DATASOURCE改变了,就要再调用一次DATAGRID.DataBind();
    在ENABLEVIEWSTATE的情况下,如果不再绑定一次的话,每次页面还是会用原来VIEWSTATE中的关于原来DATASET中的内容的。