我有一个自定义的仪表板页面(Dashboard.aspx) - 它不在列表中,而是在Pages文件夹中。
我创建了此仪表板来替换SharePoint的默认“AllItems.aspx”。
但是,我无法从SharePoint默认列表视图中复制“删除项目”的onClick事件。
任何人都可以提供有关如何从自定义页面中删除列表项的代码段吗?
P.S。:我的自定义页面已经有ID和列表名称。感谢您的回复!
答案 0 :(得分:1)
Microsoft提供的功能就是这个:
function DeleteListItem() {
ULSrLq: ;
if (!IsContextSet()) return;
var b = currentCtx,
e = currentItemID,
g = currentItemFSObjType,
c = L_STSRecycleConfirm_Text;
if (!b.RecycleBinEnabled || b.ExternalDataList) c = L_STSDelConfirm_Text;
if (b.HasRelatedCascadeLists && b.CascadeDeleteWarningMessage != null) c = b.CascadeDeleteWarningMessage + c;
if (confirm(c)) {
var h = L_Notification_Delete,
f = addNotification(h, true),
a = b.clvp;
if (b.ExternalDataList && a != null) {
a.DeleteItemCore(e, g, false);
a.pendingItems = [];
a.cctx.executeQueryAsync(function () {
ULSrLq: ;
if (typeof a.rgehs != "undefined") {
if (a.rgehs.length == 1 && a.rgehs[0].get_serverErrorCode() == SP.ClientErrorCodes.redirect) {
GoToPage(a.rgehs[0].get_serverErrorValue());
return
}
removeNotification(f);
a.ShowErrorDialog(RefreshOnDialogClose)
} else RefreshPage(SP.UI.DialogResult.OK)
}, function () {
ULSrLq: ;
removeNotification(f);
typeof a.rgehs != "undefined" && a.ShowErrorDialog()
})
} else {
var d = b.HttpPath + "&Cmd=Delete&List=" + b.listName + "&ID=" + e + "&NextUsing=" + GetSource();
if (null != currentItemContentTypeId) d += "&ContentTypeId=" + currentItemContentTypeId;
SubmitFormPost(d)
}
}
}
有了这个,你应该能够找到你需要的东西。
如果您在页面中使用了一些jQuery / JavaScript,您可能还需要检查提供一些有用功能的SharepointPlus(例如从列表中获取数据或删除项目)。
答案 1 :(得分:0)
我明白了!
我有一个名为“SPAPI_Lists”的JS库,我相信它来自SharePoint Services。
它提供了一个名为quickDeleteListItem(listName, listItemId)
的函数。
代码如下所示:
var urlThatContainsList = 'http://www.samplesite.com/sample';
var listName = 'Sample List';
var listItemId = 3;
new SPAPI_Lists(urlThatContainsList).quickDeleteListItem(listName, listItemId);