2011-02-02 154 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>