2016-09-14 23 views
0

我有一個使用智能面板的自定義項,其中包含用於編輯網格自定義用戶字段中文本的PXTextEdit框。換句話說,當單擊網格標題處的新(自定義)操作按鈕時,智能面板將彈出並允許通過PXTextEdit框編輯大量文本。我已經通過機械的方式來實現這個目標。問題是我想要:如何獲取智能面板PXTextEdit框中的信息

1.)當智能面板打開時,PXTextEdit框中包含位於網格中的特定自定義用戶字段的文本。

2.)當智能面板上單擊確定按鈕時,將智能面板的PXTextEdit字段中編輯的文本傳送到網格的自定義用戶字段。

我不知道如何使用圖形擴展業務邏輯將文本導入或導出到Smart Panel的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> 
+0

你能顯示面板的ASPX代碼嗎? –

+0

我已經添加了這個問題 - 參見上面的 – pmfith

+0

看起來應該可以正常工作。 –

回答

1

我認爲你的DataField名稱是錯誤的。你想使用「UsrNote」而不是你的智能面板中現有的「注意」字段。

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 
+0

我能夠測試並確認將DataField更改爲UsrNote,幷包含您擁有的代碼。我將該字段添加到網格中,面板中更新的內容也顯示在網格上更新(並且相反)。希望這可以幫助。 – Brendan