任何人都可以告诉我这个caml查询代码有什么问题吗?

时间:2011-05-28 00:52:48

标签: sharepoint-2010 sharepoint-designer caml sharepoint-api

查询:

<Where>
  <Eq>
    <FieldRef Name='Document Type' LookupId='True' />            
    <Value Type='Text'>Standards(STA)</Value>
  </Eq>
</Where>
<OrderBy>
 <FieldRef Name='Number' Ascending='False'/>
</OrderBy>
<RowLimit>1</RowLimit>"

代码背景:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Page Language="C#" inherits="Microsoft.SharePoint.WebPartPages.WebPartPage, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register tagprefix="WebPartPages" namespace="Microsoft.SharePoint.WebPartPages" assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register tagprefix="SharePoint" namespace="Microsoft.SharePoint.WebControls" assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<html>

<head>
<meta name="WebPartPageExpansion" content="full" />
<meta name="ProgId" content="SharePoint.WebPartPage.Document" />


<h1>T-Site</h1>

 <script runat="server" type="">            

protected void sevak(object sender, EventArgs e)

string lastitem;
try
{

  using (SPSite objsite = new SPSite("http://..."))
  {
    using (SPWeb objWeb = objSite.OpenWeb())
    {
      SPList objList = objWeb.Lists["...."];
      SPQuery objQuery = new SPQuery();

      objQuery.Query = "<Where><Eq><FieldRef Name='Document Type' LookupId='True' />            <Value Type='Text'>Standards(STA)</Value></Eq></Where><OrderBy><FieldRef Name='Number' Ascending='False'/></OrderBy><RowLimit>1</RowLimit>";

      objQuery.Folder = objList.RootFolder;
      SPListItemCollection colItems = objList.GetItems(objQuery);

      if (colItems.Count>0)
      {
        lastitem=colItems(0);
      }
      else 
      { 
        Label1.Text="noItem";
      }
    }
  }
}
catch (Exception ex)
{
  return ex;
}

Label1.Text= "lastitem";

<SharePoint:CssLink runat="server"></SharePoint:CssLink>
<SharePoint:ScriptLink runat="server" language="javascript" name="core.js">

</SharePoint:ScriptLink>

<body>

<form id="form1" runat="server" action="Page-2.aspx">
<p>


<asp:Button runat="server" Text="Submit" id="Button1" OnClick="sevak" ></asp:Button>


</p>
<p><asp:Label runat="server" id="Label1"></asp:Label></p>
</form>
</body>


</html>

1 个答案:

答案 0 :(得分:4)

我认为问题是字段引用“文档类型”:

  1. FieldRef元素需要引用字段的内部名称。如果通过UI创建了“文档类型”列,则此列的内部名称为“Document_x0020_Type”。

  2. 您指定LookupId="True"会导致查找查找字段的ID,但您提供了文本值。根据您的字段类型,您应该提供文档类型的数字ID,或者省略LookupId="True"部分以查询查找字段的文本。