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

如何根据网格选中行修改PXAction按钮标题?RowSelected事件无法触发

可行解决方案

针对你遇到的Grid RowSelected事件不触发,无法根据选中行字段修改PXAction按钮标题的问题,以下是几种可行的实现方式:

方法一:客户端脚本监听行选中事件 + 服务器端回调

通过客户端捕获网格行选中事件,获取目标字段值后调用服务器端方法生成新标题,再更新按钮文本:

  1. 在ASPX的网格控件中添加客户端RowSelected事件绑定:
<px:PXGrid ID="grid" runat="server" DataSourceID="ds" ...>
    <ClientEvents RowSelected="grid_RowSelected" />
    <!-- 其他网格配置 -->
</px:PXGrid>
  1. 编写客户端脚本处理选中事件并发起回调:
function grid_RowSelected(sender, eventArgs) {
    // 获取选中行的目标字段值(替换为你的字段名)
    var targetFieldValue = eventArgs.row.getDataKeyValue('YourDACFieldName');
    // 调用服务器端WebMethod更新按钮标题
    px_callback('GenerateButtonTitle', [targetFieldValue], function(response) {
        // 通过Action的ID获取按钮控件并更新文本
        var actionBtn = px_controls['YourActionID'];
        if (actionBtn) {
            actionBtn.text(response.d);
        }
    });
}
  1. 服务器端添加WebMethod生成按钮标题:
[PXWebMethod(Session = true)]
public static string GenerateButtonTitle(string fieldValue)
{
    // 根据业务需求生成标题,示例为拼接字段值
    return $"处理: {fieldValue}";
}

方法二:启用网格AutoPostBack + 复用RowSelected事件

如果之前未开启网格的AutoPostBack,RowSelected事件不会在选中行时触发。开启后即可通过RowSelected事件更新按钮标题:

  1. 在ASPX中开启网格的AutoPostBack:
<px:PXGrid ID="grid" runat="server" AutoPostBack="True" DataSourceID="ds" ...>
</px:PXGrid>
  1. 在RowSelected事件中更新Action标题:
protected void Grid_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
    var selectedRow = e.Row as YourDACType;
    if (selectedRow != null)
    {
        // 替换为你的PXAction实例和目标字段
        YourPXActionInstance.SetCaption($"操作: {selectedRow.TargetField}");
    }
}

注:如果是多选网格,可通过PXSelection获取所有选中行,再根据需求取对应行的字段值。

方法三:利用PXSelection跟踪选中行,在页面回发时更新

通过Acumatica的PXSelection机制获取当前选中行,在页面回发时更新按钮标题:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack) return;
    
    // 获取网格的选中行集合(替换为你的DAC类型和网格实例)
    var selectedRows = PXSelectorAttribute.GetSelection<YourDAC>(grid.Cache, grid);
    if (selectedRows.Count > 0)
    {
        var firstSelectedRow = selectedRows[0] as YourDAC;
        // 更新Action标题
        YourPXActionInstance.SetCaption($"执行: {firstSelectedRow.TargetField}");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:22:15