Order of SPDocumentLibrary Menüpunkte Custom_AddDocLibMenuItems
-
18-09-2019 - |
Frage
Ich bin das Hinzufügen eines benutzerdefinierten Kontextmenüpunkt Dokumente (und nicht die Ordner) in einer SPDocumentLibrary Liste in Sharepoint. Der folgende Code funktioniert, aber immer fügt meinen benutzerdefinierten Menüpunkt am oberen Rande des Kontextmenüs, das will ich nicht. Ich vermute, dass der letzte Parameter in CAMOpt eine Sequenznummer war, die die Reihenfolge definieren würde, aber es scheint keine Wirkung zu haben. Hat jemand wissen, ob es möglich ist, einen benutzerdefinierter Kontextmenüpunkt nach unten auf der Liste hinzufügen?
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;
}
Lösung
Gibt es einen Grund, warum Sie nicht in der Lage sind, eine verwenden benutzerdefinierte Aktion verfügen ? Zum Beispiel Merkmalselement- Code ähnlich den folgenden verwenden, aber die Sequenznummer des Custom ändern Element die Menüoption zu finden:
<?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}&ListId={ListId}" />
</CustomAction>
</Elements>
den Inhaltstyp einstellen sollte die Funktion nicht gewährleistet, auf Ordner anwenden. Wenn aus irgendeinem Grund scheint es zeigt und es gibt keine Möglichkeit, es zu deaktivieren, können Sie JavaScript / jQuery verwenden, um die Menüoption aus Ordnern zu verbergen.
Andere Tipps
In den Elementen XML für Ihre Funktion, wo Sie die User Control enthalten, fügen Sie die Reihenfolge gibt:
Control Id="AdditionalPageHead"
ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"