您好,我正在使用devexpress winform控件,特别是GridLookUpEdit,我尝试在GridLookUpEdit_ProcessNewValue事件中异步保存新记录,但我不能让创建的记录被自动选择,我已经尝试在没有"await“的情况下异步保存,它工作得很好,但我需要能够在添加到GridLookUpEdit数据源之前等待操作的结果。有没有人知道为什么会发生这种情况,或者如何解决这个问题?
DevExpress.XtraEditors.GridLookUpEdit gridLookUp = sender as DevExpress.XtraEditors.GridLookUpEdit;
try
{
var pais = cboPais.EditValue?.ToString();
if (string.IsNullOrWhiteSpace(pais))
{
e.Handled = true;
return;
}
if ((string)e.DisplayValue != String.Empty && FrameUtil.MostrarMensage(
this, "Confirmar", "Desea crear un registro nuevo ?", "La provincia o estado '" + e.DisplayValue.ToString() + "' aun no se a agregado al pais " +
pais + Environment.NewLine + "Presione si para continuar y agregarlo",
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
ProvinciaDto provincia = new ProvinciaDto()
{
CodigoPais = pais,
Descripcion = e.DisplayValue.ToString()
};
await _context.Provincias.GuardarAsync(provincia);
ListaGenerica<ProvinciaDto> listaProvincias = bsProvincia.DataSource as ListaGenerica<ProvinciaDto>;
listaProvincias.Add(provincia);
e.DisplayValue = provincia.Descripcion;
gridLookUp.Refresh();
}
}
catch (Exception ex)
{
FrameUtil.MostrarMensageError(this, ex);
}
finally
{
e.Handled = true;
}
}发布于 2021-03-23 09:30:59
我建议你参考这个- RepositoryItemLookUpEditBase.ProcessNewValue Event
这是一个向GridLoopEdit的数据源添加一条记录的简单示例。您应该尝试删除e.DisplayValue = provincia.Descripcion; gridLookUp.Refresh();。
//ProcessNewValue event handler
void LookUpEdit1_ProcessNewValue(object sender, ProcessNewValueEventArgs e) {
if ((string)e.DisplayValue != String.Empty && MessageBox.Show(
this, "Add the '" + e.DisplayValue.ToString() + "' entry to the list?",
"Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes) {
ContactList list = (sender as LookUpEdit).Properties.DataSource as ContactList;
list.Add(new Contact(list.Count, e.DisplayValue.ToString()));
e.Handled = true;
}
}https://stackoverflow.com/questions/66698666
复制相似问题