いずれかの画面のタブの1つにGIを表示したい。任意の画面のタブにGIを表示する
たとえば、OrderMarginの新しいカスタムGIがあります。これは、特定の注文のみの注文マージンを表示する新しいタブでSO画面に表示したいものです。
OrderMarginは、SOOrder、SOLine、InventoryItemのテーブル結合を使用した単純なGIであり、マージン計算に必要な列はほとんどありません。
誰でもお勧めできますか?
いずれかの画面のタブの1つにGIを表示したい。任意の画面のタブにGIを表示する
たとえば、OrderMarginの新しいカスタムGIがあります。これは、特定の注文のみの注文マージンを表示する新しいタブでSO画面に表示したいものです。
OrderMarginは、SOOrder、SOLine、InventoryItemのテーブル結合を使用した単純なGIであり、マージン計算に必要な列はほとんどありません。
誰でもお勧めできますか?
あなたは2つの隠されたパラメータでSalesOrderMarginと呼ばれるGIを作成したとしましょう:
は、あなたは以下の手順に従ってください、受注ページにこのGIを埋め込むにはSOOrderのための新たな結合していないフィールドがSalesOrderMargin GIのために絶対URLを返します:
public class SOOrderExt : PXCacheExtension<SOOrder>
{
public abstract class marginGiUrl : IBqlField { }
[PXString]
[PXUIField(Visible = false)]
public string MarginGiUrl
{
get
{
if (string.IsNullOrEmpty(Base.OrderType) ||
string.IsNullOrEmpty(Base.OrderNbr)) return string.Empty;
string inqName = "SalesOrderMargin";
var url = new StringBuilder(PXGenericInqGrph.INQUIRY_URL)
.Append("?name=").Append(inqName)
.Append("&SOOrderType=").Append(Base.OrderType);
.Append("&SOOrderNbr=").Append(Base.OrderNbr);
.Append("&hidePageTitle=true");
return PX.Common.PXUrl.SiteUrlWithPath().TrimEnd('/') +
url.ToString().Remove(0, 1);
}
}
}
を売却販売注文トップレベルのPXFormViewコンテナ内のどこかのステップ1で宣言されたカスタムSOOrder結合していないフィールドの
<px:PXTabItem Text="Margins" >
<Template>
<px:PXSmartPanel runat="server" ID="panelMarginGI" RenderIFrame="True"
AutoSize-Enabled="true" SkinID="Frame" LoadOnDemand="true"/>
</Template>
</px:PXTabItem>
置き入力コントロール:■オーダー画面には、インラインフレームとしてレンダリングするために設定さPXSmartPanelコンテナで新しいタブを追加します(入力制御は、常にユーザーから隠されるだけPXSmartPanelのソースURLを割り当てるために必要とされる):SO301000.aspxで
<px:PXFormView ID="form" runat="server" DataSourceID="ds" Width="100%"
DataMember="Document" Caption="Order Summary"...>
<Template>
...
<px:PXTextEdit ID="edMarginGiUrl" runat="server" DataField="MarginGiUrl" />
</Template>
</px:PXFormView>
PXSmartPanelのソースURLを割り当てるためにJavaScriptコードを挿入:
<script type="text/javascript" language="javascript">
function commandResult(ds, context) {
var commands = ["ReloadPage", "Save", "Cancel", "Insert", "First", "Previous", "Next", "Last"];
if (commands.indexOf(context.command) >= 0) {
var marginGiUrl = px_alls["edMarginGiUrl"];
var smartpanel = px_alls["panelMarginGI"];
if (marginGiUrl || smartpanel) {
var url = marginGiUrl.getValue();
smartpanel.setPageUrl(url);
smartpanel.repaint();
}
}
}
</script>
はcommandResult JavaScript関数を呼び出すためにPXDataSourceのCommandPerformedイベント登録:
<px:PXDataSource ID="ds" runat="server" Visible="True" Width="100%" TypeName="PX.Objects.SO.SOOrderEntry" PrimaryView="Document">
<ClientEvents CommandPerformed="commandResult" />
...
</px:PXDataSource>