1. gridcontro某列设置成了repositoryItemComboBox,这时候如果这列的某个值改变了,设置当前行的某个单元格的值,用下面的方法。
private void repLookUpEdit2_EditValueChanged(object sender, EventArgs e)
{
LookUpEdit a = (LookUpEdit)sender;
string aa = a.EditValue.ToString();
if (aa == "-1")
{
int H = grdvexpense.FocusedRowHandle;//当前记录号
grdvexpense.SetRowCellValue(H, "columnName", 1);
}
}
或者你可能需要用下面这种方法:
private void grdvexpense_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
DataRowView selecttype = (DataRowView)grdvexpense.GetFocusedRow();
decimal a= 0;
decimal b= 0;
if (!selecttype["a"].ToString().Equals("") && (!selecttype["b"].ToString().Equals("")))
{
a= (decimal)selecttype["a"];
b= (int)selecttype["b"];
selecttype["c"] = a* b;
}
}
2.如果要设置当前行的某个单元格只读,貌似不能用上面的方法了,可以用下面的方法。
{
DataRowView selecttype = (DataRowView)grdvexpense.GetFocusedRow();
if (selecttype["type"].ToString() == "-1")
{
if (grdvexpense.FocusedColumn.Name.Equals("gridColumn5"))
{
e.Cancel = true;
return;
}
}
{
string a = this.grdvexpense.GetRowCellValue(e.RowHandle, "a").ToString().Trim();
string b = this.grdvexpense.GetRowCellValue(e.RowHandle, "b").ToString().Trim();
if (a.Length < 1)
{
e.Valid = false;
this.grdvexpense.SetColumnError(this.grdvexpense.Columns["a"], "请填写名称!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default);
}
if (b.Length < 1)
{
e.Valid = false;
this.grdvexpense.SetColumnError(this.grdvexpense.Columns["b"], "请填写金额!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Default);
}
}
{
e.ExceptionMode = ExceptionMode.NoAction;
}