我有一个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");
...谢谢
答案 0 :(得分:1)
您的显示名称例程看起来正确但是为了确保列名实际更新,您需要执行以下操作:
答案 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。