在GridView中构建超链接字段

时间:2012-06-22 22:25:13

标签: c# asp.net gridview

我正在创建一个dataTable,然后将它链接到我的ASP.NET webPage上的GridView,这个GridView中有两列,我希望第二列显示为hyperLink Field。这是代码

 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”字段设为超链接字段?

3 个答案:

答案 0 :(得分:0)

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

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>

答案 1 :(得分:0)

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();

这是您如何使用网格

绑定标题和网址
<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 :(得分:0)

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

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

相关问题