javascript - Sharepoint - 从 ListViewByQuery 控件获取所选项目 - ASPX 站点

标签 javascript asp.net sharepoint

我有一个带有 ListViewByQuery 和 Button 控件的 aspx 站点。单击按钮时,我想从 ListViewByQuery 控件中获取所选项目。我使用了以下代码,但变量“选择”的计数始终为 0。

<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
    <script type="text/javascript">
        $(document).ready(function () {
            var button = $("input[id$=SaveButton]");
            button.click(function () {

                var context = SP.ClientContext.get_current();
                var selection = SP.ListOperation.Selection.getSelectedItems(context);

                var fileItems = [];
                var currentItem;

                for (currentItem in selectedItems) {
                    fileItems.push(currentItem);
                    context.load(currentItem, 'Id');
                }

                context.executeQueryAsync(Function.createDelegate(this, function () {
                    for (var i = 0; i < fileItems.length; i++) {
                        alert(fileItems[i].get_id());
                    }
                }));

            });
        });
    </script>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <div id="pnlDiv">
        <SharePoint:ListViewByQuery runat="server" ID="MyListView" Enabled="True" />
        <asp:Button ID="SaveButton" runat="server" Text="Button" />
    </div>
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    Application Page
</asp:Content>
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
    runat="server">
    My Application Page
</asp:Content>

其他事实: - 列表从隐藏文件的代码中填充 - 在 DL 编辑表单后,事件接收器(“SPEventReceiverStatus.CancelWithRedirectUrl”)调用 aspx 站点。

最佳答案

方法ListModule.Util.getSelectedItemsDict (core.js)可用于检索ListViewByQuery Control中的选定项目。 .

示例 1

该示例演示了如何从工作流历史记录列表 (wrkstat.aspx) 中检索所选项目

function getSelectedItemsInfo(ctxNumber)
{
   var listCtx = GetListContextFromContextNumber(ctxNumber);
   return ListModule.Util.getSelectedItemsDict(listCtx);
}   

//Note: Context Number for Workflow History list on page wrkstat.aspx is 2, since it contains 2 ListViewByQuery controls on the page. If page contains only single ListViewByQuery control then Context Number is 1
var selectedItems = getSelectedItemsInfo(2); 
printItemsInfo(selectedItems);

function printItemsInfo(items)
{
    if(!items)
       return;
    for (var key in items){
      var item = items[key];
      var itemId = item.id;
      var itemType = item.fsObjType;
      console.log(String.format('Selected List Item Id: {0}',itemId));
    }            
}

Note: To identify ListViewByQuery control the Context Number have to be specified. For for Workflow History list on page wrkstat.aspx is 2, since it contains 2 ListViewByQuery controls on the page. If page contains only single ListViewByQuery control then Context Number is 1

示例 2。

以下示例演示如何检索 ListItem工作流历史记录列表中所选项目的集合 (wrkstat.aspx)

function getSelectedItems(ctxNumber, success,failure)
{
   var listCtx = GetListContextFromContextNumber(ctxNumber);
   var selectedItems = ListModule.Util.getSelectedItemsDict(listCtx);
    if(!selectedItems) {
       success(null);
       return;
    }    

   var context = SP.ClientContext.get_current();
   var list = context.get_web().get_lists().getByTitle(listCtx.ListTitle);
   var listItems = [];
   for (var key in selectedItems){
      var item = selectedItems[key];
      var listItem = list.getItemById(item.id);
      context.load(listItem);
      listItems.push(listItem);
    }            

   context.executeQueryAsync(
       function () {
           success(listItems);
       },
       failure);
}

//Usage
getSelectedItems(2,printWorkflowHistory,logError);
function printWorkflowHistory(items)
{
    if(!items)
       return;
    for (var i = 0; i < items.length;i++){
      var item = items[i];
      console.log(String.format('Selected List Item Id: {0}',item.get_item('Description')));
    }            
}
function logError(error){
    console.log(JSON.stringify(error));
}

关于javascript - Sharepoint - 从 ListViewByQuery 控件获取所选项目 - ASPX 站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970161/

相关文章:

javascript - 如何使 jquery 中的显示/隐藏事务变慢?

javascript - 如何根据两个不同的输入动态设置链接的路径?

c# - 匹配时抓取一部分文本,去掉其余部分,因为它没用

javascript - 如何使用 javascript 打开 Sharepoint 模式对话框以提示用户输入

sharepoint - 如何使用客户端对象模型将 SharePoint 组添加为组所有者?

javascript - 为什么 SpeechSynthesisUtterance 有时不会在基于 Chromium 的浏览器中触发 'end' 事件?

javascript - Underscore.js,将当前日期设置为包含过去日期的键

c# - 在应用程序配置文件中找不到名为 'BddContext' 的连接字符串

c# - 基于 C# 中的 DropDownList 在 Asp.net Gridview 中启用禁用复选框

c# 检查给定的 Sharepoint 路径是否是根 sharepoint 路径?