在Winform中﹐選中行后﹐按Delete鍵可以刪除該行。現在的問題是﹕如果是不小心刪除的﹐想要取消怎么辦? (在編輯狀態中﹐可能還更改了其它內容﹐并未保存﹐所以不能重新綁定,也不能用DataTable.RejectChanges取消全部的更改)
    在Table中RowDeleted事件中﹐我已經用RejectChanges取消了行操作﹐為什么在DataGrid表中還是被刪除了?

解决方案 »

  1.   

    DataGrid.DataSource=DataTable
    無效~~~
    還是被刪除了
      

  2.   


            myDataSet.Tables("TablesName").DefaultView.AllowDelete = False
            myDataSet.Tables("TablesName").DefaultView.AllowEdit = True
            myDataSet.Tables("TablesName").DefaultView.AllowNew = False
            dGrid.DataSource = myDataSet.Tables("TablesName").DefaultView
    给分
      

  3.   

    Dim mDAdapter As SqlClient.SqlDataAdapter
            Try
                mDAdapter = New SqlClient.SqlDataAdapter(sqlStr, SQLConn)
                Dim DS As DataSet = New DataSet
                mDAdapter.Fill(DS, "TablesName")
               ' myDataSet = DS.Clone 空表
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try        myDataSet.Tables("TablesName").DefaultView.AllowDelete = False
            myDataSet.Tables("TablesName").DefaultView.AllowEdit = True
            myDataSet.Tables("TablesName").DefaultView.AllowNew = False
            dGrid.DataSource = myDataSet.Tables("TablesName").DefaultView
      

  4.   

    暈~~
    To: ccjerk(岚)
    你這樣設﹐我的DataGrid還能編輯嗎? 
    兄弟,看看題目再回答嗎!
      

  5.   

    myDataSet.Tables("TablesName").DefaultView.AllowDelete = False
    myDataSet.Tables("TablesName").DefaultView.AllowEdit = True
    myDataSet.Tables("TablesName").DefaultView.AllowNew = True可以防止按delete键删除。然后在程序中实现数据删除。参考:
    private void btnDelete_Click(object sender, System.EventArgs e)
    {
    string strTemp = "";
    DialogResult objResult; strTemp =dgrdCompany[dgrdCompany.CurrentCell.RowNumber,2].ToString().Trim();
    if(strTemp == "" || strTemp == null)
    {
    MessageBox.Show(qpLetter.GetMessageLetter(72));
    return;
    }
    strTemp=qpLetter.GetMessageLetter(53)+"\n"+strTemp;
    objResult=MessageBox.Show(strTemp,qpLetter.GetMessageLetter(3),MessageBoxButtons.YesNo);

    if(objResult == DialogResult.Yes)
    {
    m_objDS.Tables["CompanyInfo"].Row[dgrdCompany.CurrentCell.RowNumber].Delete();
    }
    }private void btnResume_Click(object sender, System.EventArgs e)
    {
    m_objDS.Tables["CompanyInfo"].RejectChanges();
    dgrdCompany_CurrentCellChanged(sender,e);
    }