如何从智能面板 PXTextEdit 框中获取信息
How to get information in and out of a Smart Panel PXTextEdit box
我有一个自定义,它使用一个包含 PXTextEdit 框的智能面板,该框用于编辑网格的自定义用户字段中的文本。换句话说,当单击网格 header 处的新(自定义)操作按钮时,会弹出智能面板并允许通过 PXTextEdit 框编辑大量文本。我已经让这个工作了,机械地。问题是我想要这样:
1.) 当智能面板打开时,让 PXTextEdit 框包含位于网格中的特定自定义用户字段的文本。
2.) 当在智能面板上单击“确定”按钮时,将在智能面板的 PXTextEdit 字段中编辑的文本传输到网格的自定义用户字段。
我不知道如何使用图形扩展业务逻辑将文本输入或输出智能面板的 PXTextEdit 框。
到目前为止,这是我的代码:
public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
public PXSelect<SOLine,
Where<SOLine.orderType, Equal<Current<SOLine.orderType>>,
And<SOLine.orderNbr, Equal<Current<SOLine.orderNbr>>,
And<SOLine.lineNbr, Equal<Current<SOLine.lineNbr>>>>>> MyPanelView;
public PXAction<SOOrder> noteAction;
[PXUIField(DisplayName = "Add Note", MapViewRights = PXCacheRights.Select, MapEnableRights = PXCacheRights.Update)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable NoteAction(PXAdapter adapter)
{
if (Base.Transactions.Current != null &&
MyPanelView.AskExt() == WebDialogResult.OK)
{
//extra stuff here if needed when OK is pushed
}
return adapter.Get();
}
}
这是面板的 aspx 代码:
<px:PXSmartPanel runat="server" ID="PXSmartPanelNote" DesignView="Hidden" LoadOnDemand="true" CreateOnDemand="false" CaptionVisible="true" Caption="Order Notes" Key="MyPanelView" AcceptButtonID="btnMyNoteOk">
<px:PXFormView runat="server" ID="formMyNote" CaptionVisible="False" Width="100%" DataSourceID="ds" DataMember="MyPanelView">
<Template>
<px:PXLayoutRule runat="server" ID="PXLayoutRule44" StartColumn="True" LabelsWidth="S" ControlSize="XL" />
<px:PXTextEdit runat="server" TextMode="MultiLine" DataField="Note" ID="cstNote" Width="400" Height="400" />
</Template>
</px:PXFormView>
<px:PXPanel runat="server" ID="PXPanel10" SkinID="Buttons">
<px:PXButton runat="server" ID="btnMyNoteOk" Text="OK" DialogResult="OK" />
</px:PXPanel>
</px:PXSmartPanel>
我还添加了回调命令:
<px:PXDSCallbackCommand CommitChanges="true" Name="NoteAction" Visible="False" DependOnGrid="grid" /></CallbackCommands>
和网格 header 按钮打开智能面板:
<px:PXToolBarButton Text="Add Note" DependOnGrid="grid">
<AutoCallBack Command="NoteAction" Target="ds" /></px:PXToolBarButton>
我认为您的 DataField 名称有误。您想要使用 "UsrNote" 而不是智能面板中现有的 "Note" 字段。
DataField="UsrNote"
这是对原文的引用 post 如果您在您的领域中有以下内容,您正在尝试使用...
#region UsrNote
[PXDBString(4000, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "Note")]
public virtual string UsrNote { get; set; }
public class usrNote : PX.Data.IBqlField { }
#endregion
我有一个自定义,它使用一个包含 PXTextEdit 框的智能面板,该框用于编辑网格的自定义用户字段中的文本。换句话说,当单击网格 header 处的新(自定义)操作按钮时,会弹出智能面板并允许通过 PXTextEdit 框编辑大量文本。我已经让这个工作了,机械地。问题是我想要这样:
1.) 当智能面板打开时,让 PXTextEdit 框包含位于网格中的特定自定义用户字段的文本。
2.) 当在智能面板上单击“确定”按钮时,将在智能面板的 PXTextEdit 字段中编辑的文本传输到网格的自定义用户字段。
我不知道如何使用图形扩展业务逻辑将文本输入或输出智能面板的 PXTextEdit 框。
到目前为止,这是我的代码:
public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
public PXSelect<SOLine,
Where<SOLine.orderType, Equal<Current<SOLine.orderType>>,
And<SOLine.orderNbr, Equal<Current<SOLine.orderNbr>>,
And<SOLine.lineNbr, Equal<Current<SOLine.lineNbr>>>>>> MyPanelView;
public PXAction<SOOrder> noteAction;
[PXUIField(DisplayName = "Add Note", MapViewRights = PXCacheRights.Select, MapEnableRights = PXCacheRights.Update)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)]
protected virtual IEnumerable NoteAction(PXAdapter adapter)
{
if (Base.Transactions.Current != null &&
MyPanelView.AskExt() == WebDialogResult.OK)
{
//extra stuff here if needed when OK is pushed
}
return adapter.Get();
}
}
这是面板的 aspx 代码:
<px:PXSmartPanel runat="server" ID="PXSmartPanelNote" DesignView="Hidden" LoadOnDemand="true" CreateOnDemand="false" CaptionVisible="true" Caption="Order Notes" Key="MyPanelView" AcceptButtonID="btnMyNoteOk">
<px:PXFormView runat="server" ID="formMyNote" CaptionVisible="False" Width="100%" DataSourceID="ds" DataMember="MyPanelView">
<Template>
<px:PXLayoutRule runat="server" ID="PXLayoutRule44" StartColumn="True" LabelsWidth="S" ControlSize="XL" />
<px:PXTextEdit runat="server" TextMode="MultiLine" DataField="Note" ID="cstNote" Width="400" Height="400" />
</Template>
</px:PXFormView>
<px:PXPanel runat="server" ID="PXPanel10" SkinID="Buttons">
<px:PXButton runat="server" ID="btnMyNoteOk" Text="OK" DialogResult="OK" />
</px:PXPanel>
</px:PXSmartPanel>
我还添加了回调命令:
<px:PXDSCallbackCommand CommitChanges="true" Name="NoteAction" Visible="False" DependOnGrid="grid" /></CallbackCommands>
和网格 header 按钮打开智能面板:
<px:PXToolBarButton Text="Add Note" DependOnGrid="grid">
<AutoCallBack Command="NoteAction" Target="ds" /></px:PXToolBarButton>
我认为您的 DataField 名称有误。您想要使用 "UsrNote" 而不是智能面板中现有的 "Note" 字段。
DataField="UsrNote"
这是对原文的引用 post 如果您在您的领域中有以下内容,您正在尝试使用...
#region UsrNote
[PXDBString(4000, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "Note")]
public virtual string UsrNote { get; set; }
public class usrNote : PX.Data.IBqlField { }
#endregion