2012-04-17 70 views
0

我有一个Sharepoint 2010列表。每个项目可以在第二个列表(“扩展”)中有一个“相关项目”。 我使用下面的代码来确定相关项是否存在(使用list.getItems)。如何从JavaScript中的SPListItemCollection获取ID?

如果确实存在,我想读取该项目的ID(来自“listCollection”)并使用它打开该项目的显示形式。但是,如何从listCollection中的对象获取项目的ID?

var listCollection; 
    function getExtended() { 
     try { 
      var context = new SP.ClientContext.get_current(); 
      var web = context.get_web(); 
      var list = web.get_lists().getByTitle('Extended'); 
      var query = '<View Scope=\'RecursiveAll\'>'+ 
          '<Query>'+ 
           '<Where>'+ 
           '<Contains>'+ 
            '<FieldRef Name=\'MainId\'/>' + 
            '<Value Type=\'Integer\'>' + GetId() +'</Value>'+ 
           '</Contains>'+ 
           '</Where>'+ 
          '</Query>'+ 
           '</View>'; 
      var camlQuery = new SP.CamlQuery(); 
      camlQuery.set_viewXml(query); 

      this.listCollection= list.getItems(camlQuery); 
      context.load(this.listCollection, 'Include(MainId, Status, ID)'); 
      context.executeQueryAsync(Function.createDelegate(this, this.listReceived), Function.createDelegate(this, this.failed)); 
     } 
     catch (e) { 
      alert(e); 
     } 
    } 

    function listReceived() { 

        var count=this.listCollection.get_count(); 
      if (count==0){ 
       $("#extendButton").html("<input type='button' onclick='NewExt()' value='Create new extended'/>"); 
      } else { 
       $("#extendButton").html("<button>Show extended</button>"); 
      } 

    } 

回答

0

重新阅读我的问题并不完全清楚我在问自己什么。但我最终使用的代码很干脆:

var listItemEnumerator = this.listCollection.getEnumerator(); 

while (listItemEnumerator.moveNext()) {  
     var oListItem = listItemEnumerator.get_current(); 
     childId= oListItem.get_item('ID'); 
} 

其中至少工作过,即使我在处理一个过于复杂的方式(一个项目)列表。