2017-01-04 4 views
0

Ich versuche, ein benutzerdefiniertes Modul zu entwickeln, das, soweit möglich, die besten Praktiken von Kentico verwendet. Ich habe den Artikel bei https://docs.kentico.com/k10/custom-development/creating-custom-modules verfolgt, aber ich habe wenig Richtung gefunden, wenn es um Folgendes geht:Kentico 10: Benutzerdefinierte Module, Unigrid und mehr

1 - Wenn ich mit einem benutzerdefinierten UniGrid, hatte ich kein Glück, einen Parameter mit der EditActionUrl übergeben. Aus meiner Sicht sollte die erste Spalte, die in der Columns-Eigenschaft deklariert wird, der 0-indizierte Stringformatparameter sein, aber meine EditActionUrl von "~/CMSModules/VendorOrders/EditVendorOrder.aspx? VendorID = {0}" nimmt immer die '{0} "als ein wörtliches. Die einzige Möglichkeit, dies zu bewerkstelligen, besteht darin, einen benutzerdefinierten OnAction-Handler mit einer Response.Redirect() auf der entsprechenden Editorseite zu erstellen, was sich jedoch nicht als Best Practice für mich erweist. Hier ist meine relevante Quelle:

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> 

-Code Behind:

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 - Bei Verwendung der integrierten Vorlagen für eine benutzerdefinierte Module UI Seite, können Sie einfach überprüfen, die "Display Breadcrumbs" Box, aber aus scheinbar offensichtlichen Gründen, tut dies nichts, wenn Type = "URL". Gibt es eine Standardmethode zum Verbinden von Breadcrumbs auf benutzerdefinierten ASPX-Modulseiten?

TIA, -Keith

Antwort

1

Ja, Sie brauchen OnAction Handler

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

auf Ihr zweites Problem zu erstellen, können Sie es manuell tun, indem Attribute zur Klasse der Seite, wie im folgenden Screenshot Hinzufügen enter image description here

+0

Ich versuchte das folgende ohne Glück. Was vermisse ich? '[UIElement ("VendorOrder", "EditVendorOrder")] [Brotkrumen] [Brotkrumen (0, TargetURL = "~/CMSModules/VendorOrders/VendorOrderList.aspx" Text = "Vendor Orders")] [Brotkrumen (1, Text = "Lieferantenbestellung bearbeiten", ExistingObject = true)] [Breadcrumb (1, Text = "Lieferantenbestellung bearbeiten", NewObject = true)] [EditedObject (VendorOrderInfo.OBJECT_TYPE, "VendorOrderID")] [ Titel (Text = "Lieferantenreihenfolge bearbeiten", ExistingObject = true)] [Titel (Text = "Lieferantenreihenfolge bearbeiten", NewObject = true)] ' – Keith

+0

Der einzige Unterschied, den ich gefunden habe, ist, dass ich direkt von CMSPage erben, Die Beispiele, die ich mit diesem Attribut gefunden habe, erben von CMSContentPage (das schließlich von CMSPage erbt). – Keith

+0

Nur um einen anderen Schraubenschlüssel in diesem zu werfen, wenn ich Currency_Edit.aspx betrachte, scheint es, als ob sie versuchen, den Breadcrumb als Currency_List.aspx zu setzen, aber wenn ich die Seite im Dashboard besuche, zeigt der Breadcrumb einfach "Multistore Konfiguration => US Dollar ", obwohl die Ressource sagt" Währungen ". Es scheint, dass Brotkrumen nicht genau so funktionieren, wie ich es von ihnen erwarte. – Keith

Verwandte Themen