2017-01-04 11 views
0

可能であれば、Kenticoのベストプラクティスを使用してカスタムモジュールを開発しようとしています。私はhttps://docs.kentico.com/k10/custom-development/creating-custom-modulesに記事を続けてきましたが、次のような場合には少しの方向性がありました。Kentico 10:カスタムモジュール、ユニグリッドなど

1 - カスタムUniGridを扱う場合、私はEditActionUrlでパラメータを渡すことができませんでした。私の理解から、 "〜/ CMSModules/VendorOrders/EditVendorOrder.aspx?VendorID = {0}"という私のEditActionUrlは常に '{0}'を取りますが、Columnsプロパティで宣言された最初の列は、 'としてリテラル。これを動作させる唯一の方法は、適切なエディタページにResponse.Redirect()を使用してカスタムOnActionハンドラを作成することですが、これは私にとってベストプラクティスではありません。

ASPX:

<cms:UniGrid ID="gridCurrentOrders" runat="server" OrderBy="Name" 
    Columns="VendorID,Name,ItemCount,TotalQuantity,TotalCost" 
    EditActionUrl="~/CMSModules/VendorOrders/EditVendorOrder.aspx?VendorID={0}"> 
    <GridActions Width="50"> 
     <ug:Action Name="edit" Caption="$General.Edit$" FontIconClass="icon-edit" FontIconStyle="allow" /> 
    </GridActions> 
    <GridColumns> 
     <ug:Column source="Name" caption="Vendor" width="50"></ug:Column> 
     <ug:Column source="ItemCount" caption="Item Count" width="25"></ug:Column> 
     <ug:Column source="TotalQuantity" caption="Total Qty" width="25"></ug:Column> 
     <ug:Column source="TotalCost" caption="Item Cost" width="100%"></ug:Column> 
    </GridColumns> 
</cms:UniGrid> 

コードの後ろ: - カスタムモジュールUIページ用の組み込みテンプレートを使用している場合、あなたは、単にチェックすることができ

protected void Page_Load(object sender, EventArgs e) 
{ 
    // Calculate which SKUs need to be reordered as follows: 
    // When [AvailableItems] + [Amount unshipped already on an open vendor order] is at or less than [ReorderAt], reorder [ReorderQuantity] 
    gridCurrentOrders.DataSource = SKUInfoProvider.GetSKUs() 
     .Source(sku => sku.Join<VendorInfo>("SKUVendorID", "VendorID")) 
     .Where("SKUAvailableItems <= SKUReorderAt") 
     .GroupBy("VendorID", "Name") 
     .Columns("VendorID, Name, count(SKUID) as ItemCount, sum(SKUReorderQuantity) as TotalQuantity, sum(SKUVendorCost * SKUReorderQuantity) as TotalCost") 
     .Result; 
} 

2ここでは私の関連するソースです"Breadcrumbsを表示"ボックスは、一見明らかな理由から、Type = "URL"のときは何もしません。カスタム.aspxモジュールページにブレッドクラムを結ぶ標準的な方法はありますか?

TIA、-Keith

答えて

1

はい、あなたは次のスクリーンショットのように、ページのクラスに属性を追加することによって、手動でそれを行うことができ、あなたの第二の問題にOnActionハンドラ

protected void gridElem_OnAction(string actionName, object actionArgument) 
{ 
    if (actionName == "edit") 
    { 
     URLHelper.Redirect(UrlResolver.ResolveUrl("/CMSModules/VendorOrders/EditVendorOrder.aspx?VendorID=" + Convert.ToString(actionArgument))); 
    } 
} 

を作成する必要があります enter image description here

+0

私は運がないと次のことを試みました。私は何が欠けていますか? '[たUIElement( "VendorOrder"、 "EditVendorOrder")] [ブレッドクラム] [ブレッドクラム(0、のTargetURL = "〜/ CMSModules/VendorOrders/VendorOrderList.aspx"、テキスト= "ベンダー注文")] [ブレッドクラム [Breadcrumb(1、Text = "Edit Vendor Order"、NewObject = true)] [EditedObject(VendorOrderInfo.OBJECT_TYPE、 "VendorOrderID")] [編集] [編集] [仕入先の順序]、[ExistingObject = true] – Keith

+0

私が見つけた唯一の違いは、私がCMSPageから直接継承しているということです。これは、一方、私はこの属性を使用して見つかった例はCMSContentPage(CMSPageを継承する)から継承しています。 – Keith

+0

Currency_Edit.aspxを見ると、別のレンチを投げるだけで、親ブレッドクラムをCurrency_List.aspxとして設定しようとしているように見えますが、ダッシュボードのページにアクセスすると、ブレッドクラムには "Multistore Configuration => "US Dollar"と表示されます。ブレッドクラムは、私が期待していたように正確に動作しないようです。 – Keith

関連する問題