【问题标题】:How to get information in and out of a Smart Panel PXTextEdit box如何在 Smart Panel PXTextEdit 框中获取信息
【发布时间】:2016-09-21 01:55:36
【问题描述】:

我有一个使用包含 PXTextEdit 框的智能面板的自定义,该框用于编辑网格的自定义用户字段中的文本。换句话说,当单击网格标题处的新(自定义)操作按钮时,智能面板会弹出并允许通过 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>

以及用于打开智能面板的网格标题按钮:

 <px:PXToolBarButton Text="Add Note" DependOnGrid="grid">
<AutoCallBack Command="NoteAction" Target="ds" /></px:PXToolBarButton>

【问题讨论】:

  • 可以显示面板的aspx代码吗?
  • 我已将其添加到问题中 - 见上文
  • 看起来应该可以正常工作。
  • 当我打开面板时它不显示注释文本,当我关闭它时它不会将 SmartPanel 中的文本放入网格中(即使在刷新网格之后)。因此,本质上,唯一有效的是面板打开和关闭。
  • 我设法通过使用在 SOOrder 上添加的自定义字段使您的代码正常工作,但使用 SOLine 对我来说它也是空的。我自己没有尝试过,但我建议将该操作添加到详细信息网格而不是工具栏,我觉得 Current 应该以这种方式正确同步。

标签: acumatica


【解决方案1】:

我认为您的 DataField 名称是错误的。您想使用“UsrNote”而不是智能面板中现有的“Note”字段。

DataField="UsrNote"

这是对原始帖子的引用,如果您尝试使用的领域有以下内容...

#region UsrNote 
[PXDBString(4000, IsUnicode = true, InputMask = "")]
[PXUIField(DisplayName = "Note")] 
public virtual string UsrNote { get; set; } 
public class usrNote : PX.Data.IBqlField { } 
#endregion

【讨论】:

  • 我能够测试并确认将 DataField 更改为 UsrNote 并包含您拥有的代码以使其有效。我将字段添加到网格中,面板中更新的内容也显示在网格上更新(反之亦然)。希望这会有所帮助。
猜你喜欢
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
相关资源
最近更新 更多