1

dataTableを作成し、それをASP.NET WebページのGridViewにリンクしています。このGridViewには2つの列があり、2番目の列をハイパーリンクフィールドとして表示したいと思います。これがコードです

 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」フィールドをハイパーリンクフィールドとして作成するにはどうすればよいですか?

4

3 に答える 3

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>
于 2012-06-22T22:59:58.920 に答える
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();

これは、グリッドでタイトルと 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の使用に関する明確なアイデアが得られます。

于 2012-06-22T23:01:16.260 に答える
0

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

これはあなたの問題または同様の問題を抱えている他の人を解決するはずです

于 2014-10-14T13:54:15.137 に答える