You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文本框旁占位符图标无法实时显示客户姓名首字母求助

问题分析

  1. 事件触发时机与数据不同步:change事件触发时,ComboBox的store可能还未完成选中项的同步,导致findRecordByValue无法正确获取对应record,进而无法生成首字母。
  2. 逻辑缺陷:SetPoponFieldCustomDisplay处理poponfield类型时,直接取store第一个item的TEXT,完全不符合选中特定客户的业务场景。
  3. 冗余查找:poponfieldInfoFeature中已拿到选中的record,却在SetPoponFieldCustomDisplay中重复执行查找逻辑,既浪费性能又增加出错概率。

修复方案

1. 优化poponfieldInfoFeature事件处理函数

直接利用已获取的record传递客户名称,避免二次查找:

var poponfieldInfoFeature = function (field, oldValue, newValue, opt) {
    var poponfield = field.up('fieldcontainer');
    var infoButton = poponfield.down('button[itemId=info]');
    if (infoButton) {
        var fieldValue = field.getValue();
        var record = field.findRecordByValue(fieldValue);
        if (record && record.get('REF')) {
            if (acpV9 && field.ACPUserDisplay) {
                // 直接传递选中record的TEXT字段
                SetPoponFieldCustomDisplay(infoButton, null, record.get('TEXT'));
            }
            infoButton.setDisabled(false);
        } else {
            if (acpV9 && field.ACPUserDisplay) infoButton.setText('');
            infoButton.setDisabled(true);
        }
    }
}

2. 修正SetPoponFieldCustomDisplay逻辑

移除错误的store元素获取逻辑,直接基于传入的客户名称处理首字母:

var SetPoponFieldCustomDisplay = function (currentbtn, ept, fieldValue) {
    var poponText = fieldValue || '';

    if (poponText !== '' && poponText !== null) {
        var matches = poponText.match(/\b(\w)/g);
        var acronym = matches ? matches.join('') : '';
        acronym = acronym.length > 2 ? acronym.charAt(0) + acronym.charAt(acronym.length - 1) : acronym;
        currentbtn.setText(acronym.toLowerCase());
    } else {
        currentbtn.setText('');
    }
}

3. 可选:改用select事件提升实时性

若change事件仍存在延迟问题,可替换为select事件(选中项后立即触发):
修改C#事件绑定代码:

// 将原change事件替换为select事件
poponField.listeners = (ComboBoxListeners)AddListenersToComponent(poponField.listeners, Helper.GetInstance().GenerateGenericListener("poponfieldInfoFeature"
    , Constant.extJsEventPameters["fieldSelect"], null, false), "select", new ComboBoxListeners());

适配select事件的处理函数:

var poponfieldInfoFeature = function (field, records, opt) {
    var poponfield = field.up('fieldcontainer');
    var infoButton = poponfield.down('button[itemId=info]');
    if (infoButton && records.length > 0) {
        var record = records[0];
        if (record && record.get('REF')) {
            if (acpV9 && field.ACPUserDisplay) {
                SetPoponFieldCustomDisplay(infoButton, null, record.get('TEXT'));
            }
            infoButton.setDisabled(false);
        } else {
            if (acpV9 && field.ACPUserDisplay) infoButton.setText('');
            infoButton.setDisabled(true);
        }
    } else {
        if (acpV9 && field.ACPUserDisplay) infoButton.setText('');
        infoButton.setDisabled(true);
    }
}

内容的提问来源于stack exchange,提问作者Aryan Mehta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:23:11