在GridView中构建超链接字段

问题描述:

我正在创建一个dataTable,然后将其链接到我的ASP.NET网页上的GridView,在这个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(); 


} 

任何想法,我怎么可以使“网址”字段作为超链接字段?

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绑定在一起

<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

因为你的领域是字符串类型,你可以添加超链接文本:

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

你可能会更好让视图处理这只是存储的网址:

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

其显示结果这样,但他们不可点击 –

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

这应该解决您的问题,或者其他任何人也有类似的问题