日期:2014-05-18  浏览次数:21155 次

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

------解决方案--------------------
除非在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
}
------解决方案--------------------
回yangpeiyu(︷1.Er℡﹎):
如果我给某列加上事件响应,这也叫编辑啊。
------解决方案--------------------
我没有用datagrid,我用的是gridex,有一人事件rowediting 进行管理。