Acumatica处理页PXGridColumn如何添加支持输入的文本列
Acumatica处理页网格添加可输入文本列解决方案
核心说明
你遇到的配置Type找不到文本框选项、列只读的问题,本质是对Acumatica网格渲染逻辑的误解:PXGridColumn不需要手动指定Type为文本框,系统会自动根据绑定的DAC字段类型渲染对应输入控件,字符串类型字段默认就会生成可输入文本框,只读问题几乎都来自字段、视图、网格的可编辑配置错误。
分步操作
1. 配置DAC字段可编辑属性
这是最核心的步骤,不管是扩展现有生产单DAC的字段,还是新增自定义非持久化字段,都要确保字段没有只读限制:
// 示例:扩展ProductionOrder DAC新增自定义状态输入字段 public class ProductionOrderExt : PXCacheExtension<ProductionOrder> { #region CustomBatchStatus public abstract class customBatchStatus : PX.Data.BQL.BqlString.Field<customBatchStatus> { } // 字符串类型对应渲染文本框,PXUIField的Enabled必须设为true [PXString(20, IsUnicode = true)] [PXUIField(DisplayName = "批量设置状态", Enabled = true)] public virtual string CustomBatchStatus { get; set; } #endregion }
如果是复用现有标准字段,需要重写字段属性去掉只读限制:
[PXMergeAttributes(Method = MergeMethod.Merge)] [PXUIField(DisplayName = "生产状态", Enabled = true)] protected virtual void ProductionOrder_Status_CacheAttached(PXCache sender) { }
2. 配置页面网格列
ASPX页面中的PXGridColumn只需要绑定正确的DataField即可,不需要额外配置Type,不要加ReadOnly="True"属性:
<PXGrid ID="prodOrderGrid" runat="server" DataSourceID="ds" AllowEdit="True"> <Columns> <!-- 其他原有列 --> <PXGridColumn DataField="CustomBatchStatus" Width="160px" /> </Columns> </PXGrid>
3. 可编辑性校验
如果配置后还是只读,按以下顺序排查:
- 确认网格的
AllowEdit属性已设为True - 确认网格绑定的数据视图没有加
[PXReadOnlyView]特性,允许更新操作 - 排除权限问题:用管理员账号测试,确认当前账号对生产单DAC有编辑权限
批量设置生产单状态场景优化
如果需要批量修改生产单状态,建议额外新增批量操作按钮,读取网格中所有行的输入值后批量更新生产单状态,避免逐行提交的性能问题。
内容的提问来源于stack exchange,提问作者Shaj
相关产品推荐
相关产品推荐

