devexpress - devExpress winform GridLookUpEdit 在 ProcessNewValue 事件后未选择新添加的值
问题描述
嗨,我正在使用 devexpress winform 控件,特别是 GridLookUpEdit,我尝试在 GridLookUpEdit_ProcessNewValue 事件中异步保存新记录,但我无法自动选择创建的记录,我尝试在没有“等待”的情况下异步保存并且它有效很好,但是在添加到 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;
}
}
解决方案
我建议你参考这个 - 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;
}
}
推荐阅读
- php - 如何在 2 个数组中打印第一个 15 天和下一个 15 天的所有日期?
- python - 如何比较两个表的 id 以及当它们相等时在另一列中添加一个值
- iframe - 如果设置了 allow-same-origin,则 amp-iframe 的来源不得等于容器
- javascript - 以形状对齐的文本
- ios - 使用带有 SKShapenode 线的 PhysicsBody。斯威夫特,iOS,SpriteKit
- alfresco - 如何使用 Alfresco 访问、打开和阅读电子邮件
- javascript - 选择tr时如何排除第一个td?CSS, jQuery
- android - PeriodicWorkRequest 触发时间
- firebase - 如何使用 firebaseui-web autoUpgradeAnonymousUsers?
- java - Java WAR 文件部署问题