Grid链接至自定义对象Graph:OrderNbr无法生成可点击链接咨询
如何让自定义对象的OrderNbr字段在采购订单Grid中成为可跳转至指定Graph的链接
嗨,我来帮你搞定这个问题!在Acumatica里要让Grid中的字段变成可点击的跳转链接,主要有几种常用方式,根据你的场景选择最适合的就行:
方法1:直接在ASPX Grid列中配置跳转链接(快速简单)
如果你只是想在采购订单页面的这个特定Grid里实现链接,直接修改ASPX页面的Grid列定义就行。找到OrderNbr对应的列,加上NavigateUrlFormat属性,指定跳转的Graph页面地址:
<px:PXGridColumn DataField="OrderNbr" DisplayName="Order Nbr" NavigateUrlFormat="~/Frame/Popup.aspx?GraphName=你的目标Graph完整命名空间.目标Graph类名&FieldName=OrderNbr&Value={0}" />
比如如果要跳转到标准采购订单页面,Graph是POOrderEntry,可以直接用页面地址更直观:
<px:PXGridColumn DataField="OrderNbr" DisplayName="Order Nbr" NavigateUrlFormat="~/PO/POOrder.aspx?OrderNbr={0}" />
方法2:通过Graph扩展的RowSelected事件动态控制(灵活可控)
如果需要根据自定义属性或者其他条件来决定是否显示链接,或者动态调整跳转目标,就适合用Graph扩展的事件来处理。在采购订单页面的Graph扩展类里添加RowSelected事件:
public class POOrderEntry_Extension : PXGraphExtension<POOrderEntry> { protected void ObjectA_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { ObjectA row = e.Row as ObjectA; if (row == null) return; // 这里可以加入自定义属性的判断逻辑,比如只有当自定义属性满足条件时才显示链接 if (row.YourCustomAttribute == true) { // 设置跳转链接,替换成你的目标Graph信息 string url = string.Format("~/Frame/Popup.aspx?GraphName=你的目标Graph命名空间.目标Graph类名&FieldName=OrderNbr&Value={0}", row.OrderNbr); PXUIFieldAttribute.SetUrl(cache, row, url); // 标记字段为可点击的链接样式 PXUIFieldAttribute.SetLinkCommand(cache, row, true); } else { // 不满足条件时隐藏链接,显示纯文本 PXUIFieldAttribute.SetUrl(cache, row, null); PXUIFieldAttribute.SetLinkCommand(cache, row, false); } } }
方法3:在DAC中标记跳转属性(全局生效)
如果希望这个OrderNbr字段在所有用到它的Grid里都自动显示为跳转链接,可以直接在ObjectA这个DAC的字段上添加PXNavigateAttribute:
public class ObjectA : IBqlTable { // 其他字段... [PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")] [PXUIField(DisplayName = "Order Nbr")] // 指定跳转的目标DAC查询,系统会自动生成跳转链接 [PXNavigate(typeof(Select<目标DAC类, Where<目标DAC类.orderNbr, Equal<Current<ObjectA.orderNbr>>>>))] public virtual string OrderNbr { get; set; } // 你的自定义属性字段 [PXDBBool] [PXUIField(DisplayName = "自定义属性")] public virtual bool? YourCustomAttribute { get; set; } }
注意事项:
- 替换代码中的
你的目标Graph完整命名空间.目标Graph类名、目标DAC类为你实际的Graph和DAC信息 - 如果跳转的是弹出窗口,用
~/Frame/Popup.aspx格式;如果是直接打开页面,用对应模块的页面地址(比如采购订单的~/PO/POOrder.aspx)
内容的提问来源于stack exchange,提问作者Kyle S
相关产品推荐
相关产品推荐

