如何在winForm中,禁止DataGrid的某一行不能编辑,除了设这行的ReadOnly=true。

解决方案 »

  1.   

    好象不能設置DataGrid的某一行為唯讀
      

  2.   

    除非在DataGrid.ColumnChanging事件中處理:
    1.注冊事件
    this.myDataSet.Tables[this.myDataMember].ColumnChanging+=new DataColumnChangeEventHandler(this.DataColumn_ColumnChanging);
    2.處理事件
    private void DataColumn_ColumnChanging(object sender,System.Data.DataColumnChangeEventArgs e)
    {
    #region 輸入資料檢測
    try
    {
    if(this.dataCenter1.EditModel && ("emp_code,bank_code").ToLower().IndexOf(e.Column.ColumnName.ToLower())>=0)
    {
    if(e.Row[e.Column.ColumnName,(e.Row.RowState==DataRowState.Detached?DataRowVersion.Proposed:(e.Row.RowState==DataRowState.Added?DataRowVersion.Default:DataRowVersion.Original))]!=e.ProposedValue)
    {
    //是否恢複表格的值
    bool ifRestore=false;
    switch(e.Column.ColumnName.ToLower())
    {
    case "emp_code":
    //
    break;
    case "bank_code":
    //
    break;
    }
    if(ifRestore)
    {
    if(e.Row.RowState==DataRowState.Detached)
    e.ProposedValue=e.Row[e.Column.ColumnName,DataRowVersion.Proposed];
    else if(e.Row.RowState==DataRowState.Added)
    e.ProposedValue=e.Row[e.Column.ColumnName];
    else
    e.ProposedValue=e.Row[e.Column.ColumnName,DataRowVersion.Original];
    }
    }
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
    }
    #endregion
    }
      

  3.   

    回yangpeiyu(︷1.Er℡﹎):
    如果我给某列加上事件响应,这也叫编辑啊。
      

  4.   

    我没有用datagrid,我用的是gridex,有一人事件rowediting 进行管理。
      

  5.   

    学习,好好学习  UPUPUP!