簡體   English   中英

使用jQuery閱讀和更新SharePoint列表

[英]Read and Update SharePoint list using jQuery

我有2列的SP2010列表。

  1. 標題[文字]
  2. 計數[數字]

我想使用jQuery將“ Count”列的值更新為+1,其中“ ID” =“ Something”(在此處使用項目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>

您可以將Firebug與Firefox結合使用來調試代碼。 通過此插件,您可以看到發送到服務器的Ajax請求及其響應。 這樣,您將能夠查看是否出了問題以及服務器說了什么。

我也認為“計數”需要解析為數字。

(請注意,您使用的是非常舊的jQuery版本,而SPServices不能與該非常舊的版本一起正常工作。此外,您還使用了SPServices的舊版本...)

否則,我認為最好在所有地方使用異步。 我不使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM