关于SetEditorBindingValue方法的使用

  关于SetEditorBindingValue方法的使用

关于SetEditorBindingValue方法的使用

功能需求

在开发应用中,通常当选择一个值时要自动带出相关数据(给其它输入框组件赋值),比如一个选择客户的LookupEdit组件,取名为txtCustomer,选择客户的同时要自动带出客户的名称、联系人以及联系电话在对应的输入框中显示出来。我们可以在EditValueChanged、Validating、或者TextChanged事件内处理。

有一种异常情况

假设在EditValueChanged事件内处理上述需求,当选择客户后能自动带出联系人及电话号码,但是客户选择框本身被莫名其妙清空了!

原因:若在EditValueChanged事件内给其他绑定数据源的组件赋值时,会重置当前组件的EditValue的值。


解决方案

必须在EditValueChanged事件内第一行代码调用SetEditorBindingValue(txtCustomer,txtCustomer.EditValue),但是这种处理可能造成死循环,给EditValue赋值时又调用了EditValueChanged事件。

改为以下写法,注意第3个参数:

SetEditorBindingValue(txtCustomer,txtCustomer.EditValue,false);


完整的写法如下:


  private void txtCustomer_EditValueChanged(object sender, EventArgs e)

  {//当选择客户,自动带出客户的名称、联系人、联系电话

 

     //不给自己的EditValue赋值,参数setEditorValuefalse

     EditorBinding.SetEditorBindingValue(txtCustomer, txtCustomer.EditValue, false);

 

     //根据编号编号查询客户详细资料

     Customer customer = new bllCustomer().Find(txtCustomer.EditValue.ToString());

 

     //除sender外,给其它绑定的数据源及EditValue赋值,setEditorValue=true

     EditorBinding.SetEditorBindingValue(txtCustomerName, customer.CustomerName, true);

     EditorBinding.SetEditorBindingValue(txtCustomerAttn, customer.Attn, true);

     EditorBinding.SetEditorBindingValue(txtCustomerTel, customer.Tel, true);

  }



VIP用户下载附件:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

关于SetEditorBindingValue方法使用
关于frmBaseChild.SetParameter方法说明与使用,打开窗体传入参数例子
C# Barcode条码控件使用方法
关于版权问题:如果使用贵公司框架版权如何进行登记和授权?
关于使用VS2010新建了模块无法加载问题
关于存储过程命名加"sp_"前缀问题
DevExpress换肤功能使用方法
IDatabase.ExecuteReader返回对象列表Func泛型函数使用方法
C# GridView 资料行数据检查使用方法(ValidateRow与InvalidRowException)
C# LINQ使用Distinct方法检查对象某个属性值是否重复
使用SendKeys.Send发送Tab键代替SelectNextControl()方法
关于CS开发框架ADMIN用户权限
关于Winform开发框架桥接功能
使用Dock.Fill控件被遮挡解决方法(将被遮挡组件设置为顶层既可解决)
用户数据操作报告(frmOperateReport)窗体使用方法
使用DbProviderFactories.GetFactory方法需要配置数据库提供者
关于C/S快速开发框架采用文本加密解密策略|C/S框架网
关于企业版V4.0代码生成器几个疑问
WCF:方法SendMessage在此代理中不受支持,如果未使用OperationContractAttribute标记
关于购买阿里云ECS服务器提供双IP用途