2013-04-26 65 views
1

我有一個包含列URL和鏈接名稱的SP列表。我將它綁定到GridView。超鏈接字段中的URL通過鏈接描述 - SharePoint列表的逗號分隔

下面是我的GridView

<asp:GridView ID="GridView1" runat="server" GridLines="None" ShowHeader="false" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:HyperLinkField DataTextField="LinkName" DataNavigateUrlFields="URL" Target="_blank"/> 
    </Columns> 
</asp:GridView> 

和背後

private void BindGridView(SPList list, string section, GridView grdView1) 
    { 
     SPQuery query = new SPQuery(); 
     query.Query = "<Where><Eq><FieldRef Name=" + section + "/><Value Type='Choice'>" + section + "</Value></Eq</Where>"; 
     query.ViewFieldsOnly = true; 
     query.ViewFields = "<FieldRef Name='URL'/>" + "<FieldRef Name='LinkName'/>"; 
     SPListItemCollection listCollection = list.GetItems(query); 
     if (listCollection != null && listCollection.Count > 0) 
     { 
      grdView1.DataSource = listCollection.GetDataTable(); 
      grdView1.DataBind(); 
     } 
    } 

假設我的代碼有鏈接名稱爲谷歌和網址www.google.com。

當我點擊GridView的超鏈接字段時,瀏覽器中的URL是//goog.com,%20//goo.com,因爲它沒有導航到URL。

有人請幫助我,讓我知道我做錯了什麼。

回答

0

使用Url值字段的正確方法是使用SPFieldUrlValue對象。

例:

List<string> urls = new List<string>(); 
foreach (SPListItem item in listCollection) 
{ 
    urls.Add(new SPFieldUrlValue(item["URL"]).Url); 
} 
grdView1.DataSource = urls; 
相關問題