2011-02-02 201 views
2

我試圖根據Sharepoint列表中的信息動態填充下拉列表。我知道我可以將列表添加到頁面並隱藏它,但我想要的是使用客戶端腳本語言填充列表,並且不在當前頁面上存在列表。我假設ajx的方法,但不知道如何做到這一點。我受限於沒有SP Designer或Visual Studio。所以這可以通過使用webpart或簡單的內容編輯器和客戶端腳本代碼/ ajax來完成。如果是這樣如何?從Sharepoint列表填充下拉列表

回答

1

看看Ribbon customizations - dropdown controls, Client Object Model and JavaScript Page Components。很多代碼都是針對功能區的,但loadCurrentWebLists和getDropdownItemsXml展示了您正在嘗試執行的操作。你也可以看看SharePoint 2010: Use ECMAScript to manipulate (Add/Delete/Update/Get) List ItemsOM model Javascript。這些處理列表項目,但你應該能夠適應列表。

+0

對不起忘了提,我使用SP 2007年,將在該版本 – Jake 2011-02-02 15:37:21

+0

此外ECMAScript的思想工作..心不是絲帶最低要求的用戶仍然在XP的視窗7..Most,所以不會第一個鏈接的想法工作? – Jake 2011-02-02 16:01:27

0

這是我如何使用它的是所有用戶的權限,以該網站列表中的用戶信息列表。 select: function(e, ui){}是從自動填充框中選擇某些內容時調用的函數。

<link href="../css/jquery-ui.css" rel="stylesheet" type="text/css"/> 
<script type="text/javascript" src="../js/jquery.min.js"></script> 
<script type="text/javascript" src="../js/jquery-ui.js"></script> 
<script type="text/javascript" src="../js/jquery.SPServices-0.5.8.js"></script> 

<script type="text/javascript"> 
$(document).ready (function() { 
    $().SPServices({ 
     operation: "GetListItems", 
     async: true, 
     listName: "User Information List", 
     CAMLViewFields: "<ViewFields>" + 
      "<FieldRef Name='Title' />" + 
      "<FieldRef Name='MobilePhone' />" + 
      "<FieldRef Name='Picture' />" + 
      "<FieldRef Name='SPSResponsibility' />" + 
      "<FieldRef Name='Name' />" + 
      "</ViewFields>", 
     completefunc: AttachMembersAutoComplete 
    }); 
}); 

function AttachMembersAutoComplete(xmlResponse) { 
    var domElementArray = $("[nodeName=z:row]", xmlResponse.responseXML); 

    var dataMap = domElementArray.map(function() { 
     return { 
      value: $(this).attr('ows_Title'), 
      mobile: $(this).attr('ows_MobilePhone'), 
      picture: $(this).attr('ows_Picture'), 
      askmeabout: $(this).attr('ows_SPSResponsibility'), 
      name: $(this).attr('ows_Name') 
     }; 
    }); 

    var data = dataMap.get(); 

    $("input#inputMembersAutoComplete").autocomplete({ 
     source: data, 
     select: function(e, ui){ 

      window.alert(ui.item['askmeabout'] + "\n" + ui.item['name']); 

      if(ui.item['picture'] != undefined) { 
       var tmpPicture = ui.item['picture']; 
       var commaIndex = tmpPicture.indexOf(','); 
       tmpPicture = tmpPicture.substr(0,commaIndex); 
      }else{ 
       var tmpPicture = "/_layouts/images/person.gif"; 
      } 

      var tmpHTML = "<div>"; 
      tmpHTML += "<a href='/Person.aspx?accountname=" + ui.item['name'] + "' >"; 
      tmpHTML += "<p>"+ ui.item['value'] + " " + ui.item['mobile'] + "</p>"; 
      tmpHTML += "</a>"; 
      tmpHTML += "<img src='"+ tmpPicture + "' />"; 
      tmpHTML += "</div>"; 

      $("#person_info").html(tmpHTML); 
     } 
    }); 
} 
</script>