关于LookupEdit组件选择一条纪录不触发EditValueChanged事件
作者:C/S框架网|www.cscode.ne  发布日期:2020/04/09 09:57:23
  关于LookupEdit组件选择一条纪录不触发EditValueChanged事件

关于LookupEdit组件选择一条纪录不触发EditValueChanged事件

问题反馈

如下图所示,当选择第2行纪录,编号为XXXX-00101-200401003,然后再选择第3行纪录,GridLookupEdit界面不会有任何不变化。

贴图图片-微信截图_20200409094441


原因


是因为选择了第2行,控件EditValue对应的值:XXXX-00101-200401003,再选择第3行,第3行Key的值与第2行的值是一致的,控件视为没有改动,所以不会触发EditValueChanged事件。

Key的值在绑定控件数据源指定的,对应:ValueMember。


解决方案

绑定数据源的ValueMember必须是主键字段,值必须唯一。


C# Code:

/// <summary>
/// 绑定参照字段的数据源
/// </summary>
/// <param name="edit">参照字段输入控件</param>
/// <param name="dataSource">数据源</param>
/// <param name="displayMember">显示字段</param>
/// <param name="valueMember">取值字段</param>
public static void BindingLookupEditDataSource(LookUpEdit edit, object dataSource, string displayMember, string valueMember)
{
  BindingLookupEditDataSource(edit.Properties, dataSource, displayMember, valueMember);
}

/// <summary>
/// 绑定表格内列参照字段的数据源
/// </summary>
/// <param name="edit">参照字段控件</param>
/// <param name="dataSource">数据源</param>
/// <param name="displayMember">显示字段</param>
/// <param name="valueMember">取值字段</param>
public static void BindingLookupEditDataSource(RepositoryItemLookUpEdit edit, object dataSource, string displayMember, string valueMember)
{
  edit.DisplayMember
= displayMember;
  edit.ValueMember
= valueMember;//必须是主键字段,值唯一
  
edit.DataSource = dataSource;
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

上一篇 下一篇