dev gridControl列中嵌套LookUpEdit,实现修改该列某一行的值,其余的行此列值全部改成修改后的值-1
遇到的问题说明
做这个功能遇到了一个问题,我加上了_EditValueChanged事件,但是获取到的值一直修改前的值,我在_EditValueChanged事件加上了下面的代码就可以了。
下面展示一些 解决的方案
。
//
this.gvDetail.RefreshData();//
this.gvDetail.CloseEditor();//必须要加上,否则是选择前的结果
下面是完整的代码,
注意:
下面的代码,放到validating的事件中实现不了此效果,修改下拉框的值后先触发的事件是_EditValueChanged事件,执行到this.gvDetail.CloseEditor()这一句后,会执行Validating事件
// A code block
var foo = 'bar';
// An highlighted block
private void repWorkPlace_Validating(object sender, CancelEventArgs e)
{
}
// A code block
var foo = 'bar';
// An highlighted block
private void repWorkPlace_EditValueChanged(object sender, EventArgs e)
{
try{
int row = this.gvDetail.FocusedRowHandle;
if (row < 0 || this.gvDetail.RowCount <= 0)
{
return;
}
this.gvDetail.RefreshData();//
this.gvDetail.CloseEditor();//必须要加上,否则是选择前的结果
ProductTab currentRow = (ProductTab )this.gvDetail.GetRow(row);
if (string.IsNullOrEmpty(currentRow.WorkPlace) || string.IsNullOrEmpty(currentRow.WorkPlace))
{
MessageBox.Show("请先录入生产车间", "提示");
return;
}
this.Cursor = Cursors.WaitCursor;
DialogResult diao = MessageBox.Show("是否将所有生产车间均设置为该生产车间!" + currentRow.WorkPlace, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (diao == DialogResult.Yes)
{
List<ProductTab > listrow = (List<ProductTab >)bsDetail.List;
foreach (ProductTab rows in listrow)
{
rows.WorkPlace = currentRow.WorkPlace == null ? "" : currentRow.WorkPlace;
}
gvDetail.RefreshData();
gvDetail.CloseEditor();
gvDetail.UpdateCurrentRow();
}
else
{ gvDetail.RefreshRow(row);
gvDetail.SetFocusedRowCellValue("WorkPlace", currentRow.WorkPlace);
}
this.gvDetail.RefreshData();
this.Cursor = Cursors.Default;
}
catch (Exception ex)
{
}
}