2014-09-22 3 views
1

ListViewByQuery 및 Button 컨트롤이있는 aspx 사이트가 있습니다. 단추를 클릭하면 ListViewByQuery 컨트롤에서 선택한 항목을 가져 오려고합니다. 나는 다음과 같은 코드를하지만 변수 "선택"을 사용 항상 0Sharepoint - ListViewByQuery 컨트롤 - ASPX 사이트에서 선택된 항목 가져 오기

<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> 

다른 사실의 수 있습니다 - 목록은 파일 뒤에 코드에서 채워지는 - 영문 사이트가 이벤트에 의해 호출된다 수신기 ("SPEventReceiverStatus.CancelWithRedirectUrl") DL에서 편집 양식 후에.

답변

0

방법 ListModule.Util.getSelectedItemsDict (core.js)은 ListViewByQuery Control에서 선택된 항목을 검색하는 데 사용할 수 있습니다.

예 1. 컨텍스트 번호이 에있는 ListViewByQuery 제어 지정할 수를 확인하려면 :

예는 워크 플로 기록 목록에서 선택한 항목

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)); 
    }    
} 

주 (wrkstat.aspx)

을 검색하는 방법을 보여줍니다. 페이지의 wrkstat.aspx에 대한 워크 플로 기록 목록은 2이며 페이지에 2 개의 ListViewByQuery 컨트롤이 포함되어 있습니다. 페이지 는 하나의 ListViewByQuery 컨트롤이 포함 된 경우, 컨텍스트 번호는 2

다음 예는 (wrkstat.aspx)

워크 플로 기록 목록에서 선택한 항목에서 ListItem 모음을 검색하는 방법을 보여줍니다 예 1

입니다

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)); 
} 
관련 문제