动态更改列名称

时间:2016-06-15 14:54:17

标签: c# acumatica

我有一个Header / Detail自定义屏幕,我正在根据标题中的下拉列表选择操作哪些网格列。这工作正常,但现在我也想更改一些列名。使用记录的语法,我无法使其工作。我看不出我做错了什么 - 似乎没有任何区别。我已经加入了流程并在这个事件中提出了一个突破点,它正在触发 - 但系统似乎只是忽略了它:

    protected virtual void ACMappingHeader_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
    {
        var mh = (ACMappingHeader)e.Row;
        if (mh == null) return;

        if (mh.MappingType == "Option1")
        {
            PXUIFieldAttribute.SetDisplayName<ACMappingDetail.target1CD>(this.MappingDetail.Cache, "Target");

...谢谢

2 个答案:

答案 0 :(得分:1)

您的显示名称例程看起来正确但是为了确保列名实际更新,您需要执行以下操作:

  • 在页面源中,您需要在网格上设置“RepaintColumns = true”值。这可以通过自定义管理器或直接从您的ASPX源完成。 - 这告诉网格在回调后刷新列,允许标题实际重新显示。

答案 1 :(得分:1)

您可以参考以下示例动态更改网格列标题。

以下示例适用于屏幕PM401000 - 项目交易查询

public class TransactionInquiryExt : PXGraphExtension<TransactionInquiry>
{
    public void TranFilter_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected baseInvoke)
    {
        if (baseInvoke != null)
            baseInvoke(cache, e);

        PX.Objects.PM.TransactionInquiry.TranFilter row = e.Row as PX.Objects.PM.TransactionInquiry.TranFilter;

        if (row == null) return;

        PXUIFieldAttribute.SetDisplayName<PMTran.description>(Base.Transactions.Cache,
            row.ProjectID.HasValue ? "Description for Project Tran" : "Description");
    }
}

确保将RepaitColumns属性设置为True PXGrid Control。

enter image description here