2013-09-25 2 views
1

У меня есть список SP2010 с 2 столбцами.Чтение и обновление списка SharePoint с помощью jQuery

  1. Название [Текст]
  2. Count [Числовые]

Я хочу использовать JQuery для обновления значения столбца "Count" +1, где "ID" = "Нечто" (с использованием Идентификатор элемента здесь). Может ли кто-нибудь помочь мне в этом помочь? Любой фрагмент кода будет оценен по достоинству.

Я пытаюсь это, но мне кажется, что «граф» не растет

<script src="/SiteAssets/Scripts/jquery-1.3.2.min.js"></script> 
<script src="/SiteAssets/Scripts/jquery.SPServices-0.6.2.min.js"></script> 

<script> 

function UpdateCount(itemID) 
{ 

var query = "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + itemID + "</Value></Eq></Where></Query>"; 
var count; 

$().SPServices({ 
operation: "GetListItems", 
async: false, 
listName: "CorpDir_Usage", 
CAMLQuery: query, 
completefunc: function(xData, Status) { 
$(xData.responseXML).find("z\\:row").each(function() { 
    count = $(this).attr('ows_Count'); 
}); 
} 
}); 

$().SPServices({ 
operation: "UpdateListItems", 
async: false, 
batchCmd: "Update", 
listName: "CorpDir_Usage", 
ID: itemID, 
valuepairs: [["Count", count++]], 
completefunc: function(xData, Status) { 

} 
}); 

}</script> 


<script type="text/javascript"> 

    $(document).ready(function(){ 
     $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){ 
      UpdateCount(1); 
     }); 
    }); 

</script> 

ответ

1

Вы можете использовать Firebug с Firefox для отладки кода. С помощью этого аддона вы можете увидеть запрос Ajax, который отправляется на сервер, и его ответ. Таким образом, вы сможете увидеть, что-то не так и что говорит сервер.

Кроме того, я считаю, что «count» нужно разобрать как число.

(Обратите внимание, что вы используете очень очень старую версию JQuery и SPServices не может работать должным образом с этой очень старой версии ... Кроме того, вы используете старую версию SPServices ...)

В противном случае, я думаю, лучше использовать async везде. Я не использую SPServices, но я думаю, что ваш код должен быть больше похож:

<script src="/SiteAssets/Scripts/jquery-1.3.2.min.js"></script> 
<script src="/SiteAssets/Scripts/jquery.SPServices-0.6.2.min.js"></script> 

<script> 

function UpdateCount(itemID) { 
    var query = "<Query><Where><Eq><FieldRef Name='ID'/><Value Type='Number'>" + itemID + "</Value></Eq></Where></Query>"; 
    var count; 

    $().SPServices({ 
    operation: "GetListItems", 
    listName: "CorpDir_Usage", 
    CAMLQuery: query, 
    completefunc: function(xData, Status) { 
     $(xData.responseXML).find("z\\:row").each(function() { 
     count = $(this).attr('ows_Count'); 
     count = 1*count; // we need to make sure it's parsed as a number 
     $().SPServices({ 
      operation: "UpdateListItems", 
      batchCmd: "Update", 
      listName: "CorpDir_Usage", 
      ID: itemID, 
      valuepairs: [["Count", ++count]], 
      completefunc: function(xData, Status) { alert("Count updated to "+count) } 
     }); 

     }); 
    } 
    }); 
} 
</script> 


<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){ 
     UpdateCount(1); 
    }); 
}); 
</script> 

Я создал библиотеку, которая имеет другой синтаксис. Если вы хотите попробовать, это называется SharepointPlus, и ваш код будет выглядеть следующим образом:

<script type="text/javascript" src="jquery-1.10.2.min.js"></script> 
<script type="text/javascript" src="sharepointplus-3.0.5.min.js"></script> 

<script> 
function UpdateCount(itemID) { 
    // find Count 
    $SP().list("CorpDir_Usage").get({fields:"Count",where:"ID = "+itemID}, function(data) { 
    if (data.length===0) alert("No item with this ID!") 
    else { 
     var count = data[0].getAttribute("Count")*1; // parse it as a number 
     // we update Count 
     $SP().list("CorpDir_Usage").update({ID:itemID, Count:++count}, { 
     error:function(items) { if (items.length > 0) alert("Error: Count has not been updated!") }, 
     success:function(items) { if (items.length > 0) alert("Count updated!") } 
     }); 
    } 
    }) 
} 
</script> 


<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#ctl00_m_g_0b30e73d_3ca6_4db1_9760_0e5518e15614_ctl00_btnSimpleSearch").click(function(){ 
     UpdateCount(1); 
    }); 
}); 
</script> 
Смежные вопросы