2016-09-07 39 views
0

グリッドに余分なメモフィールドを追加したいクライアントがあります。これが不可能な場合は、そのフィールドの大量のテキストを編集するためのポップアップウィンドウを使用する大きなテキストフィールドをグリッドに表示する方法がありますか?グリッド線に余分なメモフィールドを追加

優先度: 1.)可能であれば、余分なメモフィールドをグリッドに追加します。 2.)#1に失敗すると、大きな標準のユーザーテキストフィールドを編集するためのポップアップウィンドウを追加する方法がありますか?

答えて

0

私はあなたのナンバー1の質問に対する答えはノーだと思います。グリッドにすでにメモがある場合は、別のメモを持つことはできません。私はこの質問を以前に起こした。

#2の場合は、フィールドを表示するスマートパネルが必要です。 PXTextEditを使用して、選択した/現在の行に基づいてパネルがポイントする新しいビューを設定します。

スマートパネル(ポップアップパネル)を追加するには、いくつかのものが必要です。私はAEFとグラフとテーブルの拡張を使用する方が好きです。 T200/T300のトレーニング資料には、これらのトピックに関するドキュメントがあります。私の例では、受注機能を受注ページに追加します。私はPOSupplyOK PXActionと現在の供給元ビュー(ページSO301000)である既存の "POリンク"ボタンとパネルからロジックのほとんどをコピーしました。

まず、あなたは我々が拡張テーブル/フィールドとして販売ラインに追加されますあなたの新しいフィールドが必要です。そして、私たちはパネルのビューを追加するために新しいグラフの拡張機能を作成する必要が

[PXTable(typeof(SOLine.orderType), typeof(SOLine.orderNbr), typeof(SOLine.lineNbr), IsOptional = true)] 
public class SOLineExtension : PXCacheExtension<SOLine> 
{ 
    #region XXMyNote 
    public abstract class xXMyNote : PX.Data.IBqlField 
    { 
    } 
    protected string _XXMyNote; 
    [PXDBString] 
    [PXUIField(DisplayName = "My Note")] 
    public virtual string XXMyNote 
    { 
     get 
     { 
      return this._XXMyNote; 
     } 
     set 
     { 
      this._XXMyNote = value; 
     } 
    } 
    #endregion 
} 

をし、パネルを開くボタンのPXAction。

public class SOOrderEntryExtension : 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> myNoteAction; 
    [PXUIField(DisplayName = "Add Note", MapViewRights = PXCacheRights.Select, MapEnableRights = PXCacheRights.Update)] 
    [PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntryF)] 
    protected virtual IEnumerable MyNoteAction(PXAdapter adapter) 
    { 
     if (Base.Transactions.Current != null && 
      MyPanelView.AskExt() == WebDialogResult.OK) 
     { 
      //extra stuff here if needed when OK is pushed 
     } 

     return adapter.Get(); 
    } 
} 

ここで、受注ページを編集する必要があります。カスタマイズプロジェクトに変更を加える必要があります。この例では、サイトの下のビジュアルスタジオで\ pages \ soを直接編集します。その後、戻ってきて、プロジェクトを開き、次の手順を実行して、カスタマイズプロジェクトに私のコードを貼り付けます。

  1. クリックして画面上と+ SO301000を入力して
  2. を保存
  3. 新しい画面を追加するために署名販売注文のレイアウトエディタを開くためにSO301000ハイパーリンクをクリックして
  4. クリックアクション>(下記)変更で編集ASPX
  5. 貼り付け
SO301000ページで

は、次の行を追加します。

[1]あなたのDSコールバックコマンドはPXDataSourceタグ内

<px:PXDSCallbackCommand Name="MyNoteAction" Visible="False" 
    CommitChanges="true" DependOnGrid="grid" /> 

を追加[2]追加することにより、売上ライングリッド上のツールバーにボタンを追加します。 [ドキュメントの詳細]タブのグリッドのPXGrid> ActionBar> CustomItemsタグの後に表示されます。 (ページ内の「PO Link」を検索すると、この場所を簡単に見つけることができます。

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

[3]パネルの外観を表すパネルコードを追加します。あなたのニーズに合わせてサイジングをして遊ぶことができます。次のサンプルコードを使用してPXTextEditをMultiLineを使うように設定してください。それはページの構文のどこに入るのかを知るために、現在の販売注文のページを見てください:

<px:PXSmartPanel ID="PXSmartPanelNote" runat="server" Caption="My Note Panel Caption" 
    CaptionVisible="true" DesignView="Hidden" LoadOnDemand="true" Key="MyPanelView" CreateOnDemand="false" AutoCallBack-Enabled="true" 
    AutoCallBack-Target="formMyNote" AutoCallBack-Command="Refresh" CallBackMode-CommitChanges="True" CallBackMode-PostData="Page" 
    AcceptButtonID="btnMyNoteOk"> 
    <px:PXFormView ID="formMyNote" runat="server" DataSourceID="ds" Style="z-index: 100" Width="100%" CaptionVisible="False" 
     DataMember="MyPanelView"> 
     <ContentStyle BackColor="Transparent" BorderStyle="None" /> 
     <Template> 
      <px:PXLayoutRule ID="PXLayoutRule44" runat="server" StartColumn="True" LabelsWidth="S" ControlSize="XM" /> 
      <px:PXTextEdit ID="cstXXMyNote" runat="server" DataField="XXMyNote" TextMode="MultiLine"/> 
     </Template> 
    </px:PXFormView> 
    <px:PXPanel ID="PXPanel10" runat="server" SkinID="Buttons"> 
     <px:PXButton ID="btnMyNoteOk" runat="server" DialogResult="OK" Text="OK"/> 
    </px:PXPanel> 
</px:PXSmartPanel> 

私は完全に上記のが、一緒にエラーなしでパネルを育てた迅速な平手打ちをテストしていません。バージョン6.00.0955を使用していましたが、すべての5.Xバージョンで同じ手順を実行する必要があります。お役に立てれば。

+0

「Smartpanel」に関する文書はありますか?私はどこでそれを見つけるだろうか? – pmfith

+0

スマートパネルに関するZEROのドキュメント、または上記のシナリオをどのように実装するかは別として、私は見つけることができます。コンテキストが重要であり、「スマートパネル」は私にとっては浮遊している抽象である。 – pmfith

+0

簡単な例で私の答えを更新しようとしましょう。それまでPXSmartPanelのページを検索してみてください。スマートパネルは、既存のaspxページファイル内にあるポップアップウィンドウです。 – Brendan

関連する問題