如何在Acumatica UI(ASPX表单)中显示远程IP地址及所需DAC属性
在Acumatica UI(ASPX表单)中展示远程IP地址的实现方法及所需DAC属性
实现步骤
1. 定义DAC字段
根据需求选择是否持久化IP地址:
- 仅UI显示(不存储):定义未绑定字符串字段
- 需要存储:定义绑定数据库表的字段
示例代码(未绑定字段):
public abstract class remoteIP : IBqlField { } [PXString(15)] [PXUIField(DisplayName = "远程IP地址", Enabled = false)] public virtual string RemoteIP { get; set; }
若需存储,将PXString替换为PXDBString,并确保对应数据库表存在同名字段。
2. 在ASPX页面添加绑定控件
打开目标ASPX表单,添加绑定到该字段的文本控件:
<px:PXTextEdit ID="edRemoteIP" runat="server" DataField="RemoteIP" />
3. 在Graph中赋值远程IP
在Graph的RowSelected事件中获取并赋值访问者IP:
protected virtual void YourDAC_RowSelected(PXCache cache, PXRowSelectedEventArgs e) { var row = e.Row as YourDAC; if (row == null) return; // 获取当前请求的远程IP string ipAddress = PXWebRequestContext.Current.Request.UserHostAddress; // 处理本地测试环境的回环地址(可选) if (ipAddress == "::1" || ipAddress.Equals("localhost", StringComparison.OrdinalIgnoreCase)) ipAddress = "127.0.0.1"; cache.SetValueExt<YourDAC.remoteIP>(row, ipAddress); }
所需DAC属性说明
PXStringAttribute/PXDBStringAttribute:
定义字符串类型字段,PXDBString用于需持久化到数据库的字段,PXString用于未绑定的只读字段,可指定长度(如15适配IPv4地址)。PXUIFieldAttribute:
控制UI表现:DisplayName设置字段显示名称,Enabled = false将字段设为只读,避免用户编辑。PXUnboundAttribute(可选):
明确标记字段为未绑定(不关联数据库字段),仅用PXString也可实现未绑定效果,添加后语义更清晰。
内容的提问来源于stack exchange,提问作者Hemendra Yadav
相关产品推荐
相关产品推荐

