在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>
答
<asp:HyperLinkField HeaderText="URL" DataTextField="URLName" runat="server" DataNavigateUrlFields ="URLName"//This must be present DataNavigateUrlFormatString ="{0}"/>
这应该解决您的问题,或者其他任何人也有类似的问题
其显示结果这样,但他们不可点击 –