2013-04-26 57 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;