扩展CSAnswers DAC时,如何在网格上获取属性值的控件类型?

时间:2019-07-11 16:47:51

标签: acumatica

我正在尝试在SmartPanel网格上显示具有其他功能的attributeID和值。我可以显示这些值,但是这些值是文本类型的。我无法获得类似于IN202500的“属性”标签中的值的控件类型(复选框,组合框等)。

我扩展了CSAnswers DAC以及AttributeID和Value字段。

public PXSelectJoin<CSAnswers3,
LeftJoin<CSAnswers,On<CSAnswers.attributeID,
Equal<CSAnswers3.attributeID>>>> DetailsView;


[Serializable]
[PXPossibleRowsList(typeof(CSAttribute.description), 
typeof(CSAnswers3.attributeID), typeof(CSAnswers3.value))]
public class CSAnswers3 : CSAnswers
{
    [PXDBString(10, InputMask = "", IsKey = true, IsUnicode = true)]
    [PXDefault]
    [PXUIField(DisplayName = "Attribute", Enabled = false)]
    [CSAttributeSelector]
    public override string AttributeID { get; set; }
    public new abstract class attributeID : IBqlField, IBqlOperand { }

    [PXDBString(255, IsUnicode = true)]        
    [PXUIField(DisplayName = "Value")]
    [CSAttributeValueValidation(typeof(CSAnswers3.attributeID))]
    [PXPersonalDataFieldAttribute.Value]
    public override string Value { get; set; }    


}

<px:PXSmartPanel runat="server" ID="AttributeInfo" Key="detailsView" 
LoadOnDemand="True" Caption="AttributeInfo">
<px:PXGrid runat="server" ID="CstPXGrid2" AutoAdjustColumns="True" 
DataSourceID="ds" MatrixMode="True" SkinID="Attributes">
<Levels>
<px:PXGridLevel DataMember="detailsView">
<Columns>
<px:PXGridColumn DataField="AttributeID" Width="120" />
<px:PXGridColumn DataField="Value" Width="280" /></Columns> 
</px:PXGridLevel></Levels></px:PXGrid>
<px:PXPanel runat="server" ID="CstPanel3">
<px:PXButton runat="server" ID="CstButton4" DialogResult="OK" 
Text="Close" /></px:PXPanel></px:PXSmartPanel></asp:Content>

我试图在网格上获取“控件类型”(如CheckBox,Combo等)的值,如“库存项目屏幕”的“属性”标签中一样。

1 个答案:

答案 0 :(得分:0)

Acumatica数据库中有一个表CSAttribute,并且该表具有ControlType列。在Sales演示数据库的示例中,您可以看到可以通过以下SQL查找属性“ SALESGOALY”的ControlType:

&

,您可以使用以下BQL来获取类型:

stderr

Acumaitca源代码的以下片段在键入时给出了确切答案:

stdout

表示“ SALESGOALY”的类型为1,或者是文本。