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 に答える