使用jQuery读取和更新SharePoint列表

时间:2013-09-25 08:41:23

标签: jquery sharepoint

我有2列的SP2010列表。

  1. 标题[文字]
  2. 计算[数字]
  3. 我想使用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>
    

1 个答案:

答案 0 :(得分: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>