2009-08-17 9 views
1

Ich füge einen benutzerdefinierten Kontextmenüeintrag zu Dokumenten (und nicht Ordnern) in einer SPDocumentLibrary-Liste in SharePoint hinzu. Der folgende Code funktioniert, aber fügt immer mein benutzerdefiniertes Menüelement an dem Anfang des Kontextmenüs hinzu, das ich nicht möchte. Ich vermutete, dass der letzte Parameter in CAMOpt eine Sequenznummer war, die die Reihenfolge definieren würde, aber es scheint keine Wirkung zu haben. Weiß jemand, ob es möglich ist, einen benutzerdefinierten Kontextmenüeintrag am Ende der Liste hinzuzufügen?Reihenfolge der SPDocumentLibrary-Menüelemente mit Custom_AddDocLibMenuItems

function Custom_AddDocLibMenuItems(m, ctx) { 
    var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType"); 
    if (otype != 1) { 
     var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id"); 
     var listId = ctx.listName; 

     var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/custom/PAGES/mycustompage.aspx?ListId=' + listId + '&ListItemID=' + itemId + ');'; 
     CAMOpt(m, 'Custom Menu Item', action, '/_layouts/custom/IMAGES/action.gif', '', 110); 
     CAMSep(m); 
    } 
    return false; 
} 

function Go_To_Page(page) { 
    window.location = page; 
} 

Antwort

1

Gibt es einen Grund, warum Sie custom action feature nicht verwenden können? Zum Beispiel Merkmalselement- Code ähnlich den folgenden verwenden, aber die Sequenznummer der CustomAction element ändern, um die Menüoption zu suchen:

<?xml version="1.0" encoding="utf-8" ?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <CustomAction 
     Id="DoSomething" 
     RegistrationType="ContentType" 
     RegistrationId="0x0101" 
     Location="EditControlBlock" 
     Sequence="10001" 
     ImageUrl="/_layouts/images/action.gif" 
     Title="Do Something"> 
     <UrlAction Url="~site/_layouts/custom/PAGES/mycustompage.aspx?ListItemID={ItemId}&amp;ListId={ListId}" /> 
    </CustomAction> 
</Elements> 

den Inhaltstyp einstellen sollte die Funktion nicht gewährleistet, auf Ordner anwenden. Wenn es aus irgendeinem Grund angezeigt wird und es keine Möglichkeit gibt, es zu deaktivieren, können Sie JavaScript/jQuery verwenden, um die Menüoption aus Ordnern auszublenden.

0

In den Elementen XML für Ihre Funktion, wo Sie die User Control enthalten, fügen Sie die Sequenz dort:

Control Id="AdditionalPageHead" 
     ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"