1

我有一个包含 URL 和链接名称列的 SP 列表。我将它绑定到 GridView。

下面是我的 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();
        }
    }

假设我的链接名称为 Google,URL 为 www.google.com。

当我单击 GridView 的超链接字段时,浏览器中的 URL 是//goog.com,%20//goo.com,因此它不会导航到 URL。

有人请帮助我,让我知道我做错了什么。

4

1 回答 1

0

使用 Url Value 字段的正确方法是使用SPFieldUrlValue对象。

前任:

List<string> urls = new List<string>();
foreach (SPListItem item in listCollection)
{
    urls.Add(new SPFieldUrlValue(item["URL"]).Url);
}
grdView1.DataSource = urls;
于 2013-04-27T08:18:47.060 回答