2014-09-25 122 views
0

我有一個列表中查找另一個表來獲取該數據值。我可以直接查詢表格,並返回我想要的數據。我有另一個表使用上一個表作爲其中一個字段的選擇。我查詢了使用查找表的表中的所有字段,並且與查找對應的字段是由分號和散列符號分隔的查找表的兩個數據字段。我一直試圖格式化一個CAML查詢,以根據該表中的字段過濾使用查找表的數據,並從中獲取另一個字段。對不起,這真的很難解釋,但也許在看到我的代碼後,你會看到我想要得到的。獲取SharePoint數據查詢

如果我做的查找表這樣的查詢:

<body> 
<script type="text/javascript" src="jquery-1.7.2.min.js"></script> 
<script type="text/javascript" src="jquery.SPServices-0.7.1a.js"></script> 

var ViewFields = "<ViewFields>" + 
       "<FieldRef Name='Title' />" + 
       "<FieldRef Name='Column_x0020_Number' Type='Number' />" + 
       "</ViewFields>"; 

$(document).ready(function() { 
    $().SPServices({ 
     operation: "GetListItems", 
     async: false, 
     listName: "Categories", 
     CAMLViewFields: ViewFields, 
     completefunc: function (xData, Status) { 
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 
       var categoryHtml = "<td>" + $(this).attr("ows_Title") + "</td>"; 
       var columnNumHtml = "<td>" + Math.round($(this).attr("ows_Column_x0020_Number")) + "</td>"; 
       var addRow = "<tr>" + categoryHtml + columnHtml + "</tr>"; 
       $("#Categories").append(addRow); 
      }); 
     } 
    }); 
}); 

</script> 
<table border="1" id="Categories" /> 
</body> 

我得到的回報,如:

CAT1 1 CAT2 2 ....

所以,它的工作。這是從中查找的表格。

接下來我們的代碼,試圖讓數據形成的問題表:

var ViewFields = "<ViewFields>" + 
       "<FieldRef Name='Title' />" + 
       "<FieldRef Name='Category_x0020_Name' />" + 
       "<FieldRef Name='Amount' Type='Number' />" + 
       "<FieldRef Name='Question' />" + 
       "<FieldRef Name='Answer' />" + 
       "</ViewFields>"; 

    $().SPServices({ 
     operation: "GetListItems", 
     async: false, 
     listName: "Categories", 
     CAMLViewFields: ViewFields, 
     completefunc: function (xData, Status) { 
      $(xData.responseXML).SPFilterNode("z:row").each(function() { 
       var titleHtml = "<td>" + $(this).attr("ows_Title") + "</td>"; 
       var categoryNameHtml = "<td>" + $(this).attr("ows_Category_x0020_Name")) + "</td>"; 
       var nameHtmlSplitString = categoryNameHtml.split(";#"); 
       var categoryNumString = "<td>" + nameHtmlSplitString[0] + "</td>"; 
       var categoryNameString = "<td>" + nameHtmlSplitString[1] + "</td>"; 
       var amount = "<td>" + Math.round($(this).attr("ows_Amount)) + "</td>"; 
       var question = "<td>" + $(this).attr("ows_Question) + "</td>"; 
       var categoryNumString = "<td>" + $(this).attr("ows_Answer) + "</td>"; 
       var addRow = "<tr>" + titleHtml + categoryNameHtml + categoryNameString + categoryNumString + amountHtml + questionHtml + answerHtml + "</tr>"; 
       $("#Questions").append(addRow); 
      }); 
     } 
    }); 
}); 
</script> 
<table border="1" id="Questions" /> 

這回來相當細跟:

CAT1問題1 | 1;#CAT1 | 1 | CAT1 | 100 |(問題1.1)|(回答1.1)

CAT1問題2 | 1;#CAT1 | 1 | CAT1 | 200 |(問題1.2)|(回答1.2)

CAT1問題3 | 1;# Cat1 | 1 | Cat1 | 300 |(問題1.3)|(答案1.3)

CAT1問題4 | 1;#CAT1 | 1 | CAT1 | 400 |(問題1.4)|(回答1.4)

CAT1問題5 | 1;#CAT1 | 1 | CAT1 | 500 |(問題1.5 )|(回答1.5)

CAT2問題1 | 2;#CAT2 | 2 | CAT2 | 100 |(問題2.1)|(回答2.1)

CAT2問題2 | 2;#CAT2 | 2 | CAT2 |問題2.2 |(答案2.2)

Cat2問題3 | 2;#Cat2 | 2 | Cat2 | 300 |(問題2.3)|(答案2.3)

Cat2 Question 4 | 2;#Cat2 | 2 | Cat2 | 400 |(question 2.4)|(answer 2.4)

Cat2問題5 | 2;#Cat2 | 2 | Cat2 | 500 |(question 2.5)| (回答2.5)

的Cat3問題1 | 3;#的Cat3 | 3 |的Cat3 | 100 |(問題3.1)|(回答3.1)

的Cat3問題2 | 3;#的Cat3 | 3 |的Cat3 | 200 |(3.2的問題)|(回答3.2)

......

這樣去細差不多,除了 「1;#CAT1」 的回報。我可以明顯地解析它們罰款,但現在,當我嘗試編寫一個查詢:

var Query = "<Query>" + 
      " <Where>" + 
      "  <Eq>" + 
      "   <FieldRef Name='Category_x0020_Name' />" + 
      "    <Value Type='Text'>" + 
      "     2;#Cat2" + 
      "    </Value>" + 
      "  </Eq>" + 
      " </Where>" + 
      "</Query>"; 

,我運用它在SPServices

 ... 
     listName: "Categories", 
     CAMLViewFields: ViewFields, 
     CAMLQuery: Query, 
     completefunc: function (xData, Status) { 
     .... 

我什麼也沒得到。

任何建議如何處理下拉數據?

+0

有沒有人在那裏? – trout0525 2014-09-26 12:09:40

回答

0

我確實找到了解決辦法,我認爲這可能是http://spservices.codeplex.com/的問題,或者至少是我最終得到答案的地方。我只是在這裏發佈,以防其他人需要幫助。

它與「查找」標誌的查詢中的項目有關。查詢需要像這樣格式化:

var Query = "<Query>" + 
       "<Where>" + 
        "<Eq>" + 
         "<FieldRef Name='Category_x0020_Name' LookupId='True' />" + 
          "<Value Type='Lookup'>" + 
           categoryNum + 
          "</Value>" + 
        "</Eq>" + 
       "</Where>" + 
      "</Query>"; 

注意:categoryNum只是一個傳遞給函數的變量。要獲得關於LookupId的更多信息,我無法找到任何東西。它與CAML有關。我的理解是,LookupId ='true'告訴查詢使用下拉菜單的id,如果你只想使用你正在查找的值,那麼你可以離開LookupId。因此,使用LookupId ='True'時,您使用ID,否則只需查詢您要查找的數據。哦,一定要使用Value Type ='Lookup'。

我希望這可以幫助別人。

謝謝