【问题标题】:Building Hyperlink fields in GridView在 GridView 中构建超链接字段
【发布时间】:2012-06-22 22:25:12
【问题描述】:

我正在创建一个数据表,然后将其链接到我的 ASP.NET 网页上的 GridView,此 GridView 中有两列,我希望将第二列显示为超链接字段。这是代码

 protected void btnSearch_Click(object sender, EventArgs e)
{

    DataTable SearchTable = new DataTable();
    DataColumn Title = new DataColumn("Title", typeof(System.String));
    DataColumn url = new DataColumn("url", typeof(System.String));
    SearchTable.Columns.Add(Title);
    SearchTable.Columns.Add(url);
    DataRow ResultRow = null;


    var bingContainer = new Bing.BingSearchContainer(new Uri("https://api.datamarket.azure.com/Bing/Search/"));
    var accountKey = "MyKey";

    // the next line configures the bingContainer to use your credentials.
    bingContainer.Credentials = new NetworkCredential(accountKey, accountKey);

    // now we can build the query
    var webQuery = bingContainer.Web(this.txtSearch.Text, null, null, null, null, null);

    var webResults = webQuery.Execute();

    foreach (var result in webResults)
    {


        ResultRow = SearchTable.NewRow();
        ResultRow["Title"] = result.Title;
        ResultRow["url"] = result.Url;  //I want this Field as a HyperLink

        SearchTable.Rows.Add(ResultRow);
    }

    grdResult.DataSource = SearchTable;
    grdResult.DataBind();


}

知道如何将“Url”字段作为超链接字段吗?

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:
    DataTable SearchTable = new DataTable();
    DataColumn Title = new DataColumn("Title", typeof(System.String));
    DataColumn url = new DataColumn("url", typeof(System.String));
    SearchTable.Columns.Add(Title);
    SearchTable.Columns.Add(url);
    DataRow ResultRow = null;
    
    
    var bingContainer = new Bing.BingSearchContainer(new Uri("https://api.datamarket.azure.com/Bing/Search/"));
    var accountKey = "MyKey";
    
    // the next line configures the bingContainer to use your credentials.
    bingContainer.Credentials = new NetworkCredential(accountKey, accountKey);
    
    // now we can build the query
    var webQuery = bingContainer.Web(this.txtSearch.Text, null, null, null, null, null);
    
    var webResults = webQuery.Execute();
    
    foreach (var result in webResults)
    {
    
    
        ResultRow = SearchTable.NewRow();
        ResultRow["Title"] = result.Title;
        ResultRow["url"] = result.Url;  //I want this Field as a HyperLink
    
        SearchTable.Rows.Add(ResultRow);
    }
    
    grdResult.DataSource = SearchTable;
    grdResult.DataBind();
    

    这就是你如何将标题和 URL 与 Grid 绑定

    <asp:GridView ID="grdResult" runat="server" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField HeaderText="Title">
                    <HeaderTemplate>
                        Title
                    </HeaderTemplate>
                    <ItemTemplate>
                        <%#DataBinder.Eval(Container.DataItem, "Title")%></span>
                    </ItemTemplate>
                    <FooterTemplate>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="URL">
                    <HeaderTemplate>
                        URL
                    </HeaderTemplate>
                    <ItemTemplate>
                        <a href="<%#DataBinder.Eval(Container.DataItem, "url")%>" target="_blank">
                            <%#DataBinder.Eval(Container.DataItem, "url")%></a><br />
                    </ItemTemplate>
                    <FooterTemplate>
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    

    希望这会有所帮助。您也可以访问此链接,让您清楚了解使用 Bing API Buena Digital

    【讨论】:

      【解决方案2】:

      由于您的字段是字符串类型,您可以将超链接添加为文本:

      ResultRow["url"] = string.format("<a href='{0}'>{0}</a>", result.Url);
      

      你最好让视图处理这个并只存储 url:

           <asp:TemplateField>
              <ItemTemplate>
                  <a href='<%# Eval("url") %>'><%# Eval("url") %></a>
              </ItemTemplate>
           </asp:TemplateField>
      

      【讨论】:

      【解决方案3】:

      <asp:HyperLinkField HeaderText="URL" DataTextField="URLName" runat="server" DataNavigateUrlFields ="URLName"//This must be present DataNavigateUrlFormatString ="{0}"/>

      这应该可以解决您的问题或其他有类似问题的人

      【讨论】:

        猜你喜欢
        • 2012-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多