
ERP中,在录入、修改数据时,数据库中保存编码信息,而客户端显示相关编码的名称、简称等比较符合用户的使用习惯,例如下图:
?? ? 此类问题的解决思路见《Micorsoft dynamics ax 2009 Development Cookbook》->Building?
Lookups-> Building a lookup based on record descirption。基本思路是用AX中的edit方法实现,
照着书中说的做就可实现。
?? ? 进一步的改进功能是如何快速定位到需要选择的客户信息。比如上例联想(北京)有限公司,用户只需要输入:lxbj...,lookup下拉框即可自动缩小范围,过滤出满足条件的汉字拼音首字节。
如下图:
?? ? ?在快速定位输入框里面,只需要输入lxb就可以定位到需要选择的数据。
?? ? ?解决思路:
?? ? 1、在客户信息表中,增加拼音码字段,记录客户简称每个汉字的首字母。对客户名称录入、修改时,自动记录下拼音码,需要专门写个函数实现。
?? ? 2、用form代替默认lookup,见《Development Cookbook》->Building?Lookups->
Using a form for lookup building.
?? ? 3、form上增加个editstring输入框:
a.覆盖textChange()方法
public void textChange()
{
????super();
?? ?khxxb0_ds.executeQuery();
}
b.覆盖enter()方法
public void enter()
{
?? ?super();
?? ?this.setSelection(strlen(this.text()),strlen(this.text()));
}
这一步是必须的,要不输入框只能输入一个字母,再次输入会把上一次的覆盖掉。
c.datasource中覆盖executeQuery()
public void executeQuery()
{
?? ?str ?ls_input;
?? ?ls_input = input.valueStr();
?? ?ls_input = '*'+ ls_input + '*';
?? ?qbr.value(ls_input);
?? ?super();
}
?? ?以上步骤完成后,在输入框中,可根据客户简称汉字的首字母,自动缩小定位范围,快速选择
到需要的客户信息,此方法对数据量较大的编码表非常有用,可让用户非常快速的选择到需要的
信息。








