的URL我使用SPSiteDataQuery顯示來自不同列表文件。我使用Gridview顯示文檔。 Gridview的其中一列是超鏈接字段。如何設置每個文檔的url,因爲每個文檔都來自不同的文檔庫?爲了您的信息,我使用Caml Query來過濾文檔。獲取列表的SharePoint中使用CAML查詢
請幫幫我。
這裏是代碼:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using System.Data;
using Microsoft.SharePoint.Utilities;
namespace Uniway.FOD.Intranet.ControlTemplates
{
public partial class Documents : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = GetAllDocuments();
// Set up the field bindings.
BoundField boundField = new BoundField();
boundField.HeaderText = "File name";
boundField.DataField = "Title";//"LinkFilename";
GridView1.Columns.Add(boundField);
HyperLinkField hyperlinkField = new HyperLinkField();
hyperlinkField.HeaderText = "Link name";
hyperlinkField.DataTextField = "LinkFileName";
hyperlinkField.DataNavigateUrlFields = new[] { "LinkFileName" };
hyperlinkField.DataNavigateUrlFormatString = "{0}";
GridView1.Columns.Add(hyperlinkField);
BoundField boundField2 = new BoundField();
boundField2.HeaderText = "Link File Name";
boundField2.DataField = "LinkFilename";
GridView1.Columns.Add(boundField2);
GridView1.DataBind();
}
public DataTable GetAllDocuments()
{
SPSiteDataQuery objSPSiteDataQuery = null;
SPWeb objSPWeb = null;
DataTable objDataTable = null;
objSPWeb = SPContext.Current.Web;
objSPSiteDataQuery = new SPSiteDataQuery();
//Specify the fields to be fetched in the results.Similar to select clause of an SQL query
objSPSiteDataQuery.ViewFields = "<FieldRef Name=\"LinkFilename\"/>" +
"<FieldRef Name=\"Title\" />" +
"<FieldRef Name=\"Created\" />" +
"<FieldRef Name=\"Modified\"/>" +
"<FieldRef Name=\"Editor\"/>";
//specifying list server template=101 so that it will query only document libraries
objSPSiteDataQuery.Lists = "<Lists ServerTemplate=\"101\" BaseType=\"1\" Hidden=\"FALSE\" MaxListsLimit=\"0\"/>";
objSPSiteDataQuery.RowLimit = 1000;
objSPSiteDataQuery.Webs = "<Webs Scope=\"Recursive\"/>";
//querying all documents of the content type 'CT23December1' having version=1.0
objSPSiteDataQuery.Query = @"<Where>
<Eq>
<FieldRef Name='File_x0020_Type' />
<Value Type='Text'>doc</Value>
</Eq>
</Where><OrderBy><FieldRef Name='Modified' Ascending='False' /></OrderBy>";
objDataTable = objSPWeb.GetSiteData(objSPSiteDataQuery);
return objDataTable;
}
}
}
嗨包,謝謝您的回覆。我已經使用了EncodeAbsUrl,但是沒有得到完整的url,就像你在示例中顯示的那樣。這就是我得到: EncodedAbsUrl:HTTP:// SP2010/ SERVERURL:/ LinkFilename:如何to.docx 我在做什麼錯 – 2012-01-06 14:52:38
哇瘋了..顯然[其他](HTTP://計算器。 COM /問題/ 1530335 /爲什麼-getsitedataquery - 回報 - 錯誤的值)[人](http://social.msdn.microsoft.com/Forums/en/sharepointdevelopment/thread/5ab362cf-edfd-4450-a254-3f2607022647) [有此問題](https://platinumdogs.wordpress.com/2010/01/13/spsitedataquery-and-the-encodedabsurl-hidden-field/)。 'FileRef'呢? – 2012-01-06 15:47:27
我已經嘗試過但它不顯示我想要的內容。 – 2012-01-06 18:24:45