SharePoint Client-Objektmodell - Wie zu Lesen eine Liste mit dem gleichen Namen in mehreren Standorten

Mein problem ist Folgendes:

Ich habe eine Liste unter der Websitesammlung root-Vertretung der Projekte, genannt "Projekt Registrieren". Jedes Element in dieser Liste repräsentiert ein Projekt, wo ich bin die Speicherung der Projekt-name, status, URL und einigen anderen Eigenschaften. Die URL gespeichert, weil jedes Element wird mit einer entsprechenden SharePoint-sub-Website unter der gleichen Websitesammlung erstellt wird dynamisch über ein benutzerdefiniertes Ereignis-Empfänger in Visual Studio erstellt.

Jedes Projekt sub-Website hat eine Liste namens "Mitglieder" verwendet, um zu verfolgen Menschen, die zugewiesen ist, das Projekt. Dies ist ein business-Anforderung und diese Liste ist für einige andere Zwecke, die außerhalb des Geltungsbereichs dieser Frage.

Nun, meine Herausforderung ist, dass ich brauche, um zu zeigen, in eine dropdownlist an eine andere Liste namens 'Stundenzettel' der Projekte, in denen der angemeldete Benutzer zugeordnet wurde. Dies ist, um dem Benutzer die Fähigkeiten, um geben Sie die Zeit in solche Projekte. Dieses timesheet Liste ist nichts aber eine out-of-the-box SharePoint-Kalender-Liste, mit einige benutzerdefinierte Felder.

Unten ist der code, den ich verwende, aber es gibt mir immer die folgende Fehlermeldung beim abrufen der Mitglieder-Liste.

Uncaught TypeError: Cannot call method 'anwenden' undefined

Kann jemand mich in die richtige Richtung?

Den code, den ich verwende, ist in einer benutzerdefinierten .js-Datei, die ich ordnungsgemäß verwiesen wird in meinem master page:

 $(document).ready(function () {

    SP.SOD.executeOrDelayUntilScriptLoaded(loadMyProjects,'SP.js');

 });

    var $ddlMyProjectsNewItem;
    var allProjects = new Array();

    function loadMyProjects()
    {

    $ddlMyProjectsNewItem = $("#ctl00_ctl32_g_03acc13b_954d_4bdc_9544_b379206bc9d5_ctl00_ctl05_ctl00_ctl00_ctl00_ctl04_ctl00_Lookup");
    var isTimesheetNewForm = $ddlMyProjectsNewItem.attr("id") != undefined ? true : false;

    if(!isTimesheetNewForm)
    {
        return;
    }

    $ddlMyProjectsNewItem.empty();


    //Get the current client context.
    var clientContext = SP.ClientContext.get_current();
    var web = clientContext.get_web();

    var list = web.get_lists().getByTitle('Project Register'); 
    var camlQuery = new SP.CamlQuery();

   camlQuery.set_viewXml("<View>" +
   "<ViewFields>" +
        "<FieldRef Name='Full_x0020_Project_x0020_Name' />" +
        "<FieldRef Name='ID' />" +
        "<FieldRef Name='Links' />" +
    "</ViewFields>" +
    "<Query>" +
        "<Where>" +
            "<Eq>" +
                "<FieldRef Name='Status' />" +
                "<Value Type='Lookup'>WIP</Value>" +
            "</Eq>" +
       "</Where>"+
        "<OrderBy>" +
            "<FieldRef Name='Full_x0020_Project_x0020_Name' Ascending='FALSE' />" +
        "</OrderBy>" + 
    "</Query>" +
    "</View>");

    this.collListItem = list.getItems(camlQuery);

    clientContext.load(collListItem);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onProjectsQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));        

}

function onProjectsQuerySucceeded(sender, args) {

    var listItemEnumerator = collListItem.getEnumerator();

    while (listItemEnumerator.moveNext()) {

        var oListItem = listItemEnumerator.get_current();
        var projectId = oListItem.get_id();
        var projectName = oListItem.get_item('Full_x0020_Project_x0020_Name');
        var projectUrl = oListItem.get_item('Links');

        allProjects.push(projectId + "|" + projectName  + "|" + projectUrl);
    }

    $.each( allProjects, function( key, value ) {

        var projectMembers = new ProjectSiteMembers(value);
        projectMembers.get_members();

    });  

}

function ProjectSiteMembers(projectData) {
   //console.log(projectData);

    var projectValues = projectData.split('|');
    this.projectId = projectValues[0];
    this.projectName = projectValues[1];
    this.projectUrl = projectValues[2];

    this.clientContext = null;
    this.website = null;
    this.membersList = null;
    this.collListItemMembers = null;    
}

//Define the class methods.
ProjectSiteMembers.prototype = {
    get_members: function () {

        //console.log(this.projectUrl);

        this.clientContext = new SP.ClientContext(this.projectUrl);
        this.website = this.clientContext.get_web();

        this.membersList = this.clientContext.get_web().get_lists().getByTitle('Members')


        var camlQuery = new SP.CamlQuery();
        camlQuery.set_viewXml("<View>" +
   "<ViewFields>" +
        "<FieldRef Name='Member' />" +
    "</ViewFields>" +
    "<Query>" +
        "<Where>" +
            "<Eq>" +
                "<FieldRef Name='Member' />" +
                "<Value Type='Integer'>" +
                    "<UserID Type='Integer' />" +
         "      </Value>" +
            "</Eq>" +
        "</Where>"+
    "</Query>" +
    "</View>");

        this.collListItemMembers = this.membersList.getItems(camlQuery);

        this.clientContext.load(this.collListItemMembers);

            //Everything works until this point
            //This is the line giving me the error
        this.clientContext.executeQueryAsync(Function.createDelegate(this, this.onProjectMembersQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));           
    }
};


function onProjectMembersQuerySucceeded(sender, args) {

    //console.log(this.projectId + " - " + this.projectName);

    var listItemInfoMember = '';

    var listItemMemberEnumerator = collListItemMembers.getEnumerator();

    while (listItemMemberEnumerator.moveNext()) {
        var oListItemMember = listItemMemberEnumerator.get_current();


            $ddlMyProjectsNewItem 
                .append('<option value="' + this.projectId + '">' + this.projectName + '</option>');

    }        
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
InformationsquelleAutor user2589862 | 2013-07-17
Schreibe einen Kommentar