如何使用c#在表中创建链接文本

时间:2012-11-29 07:51:29

标签: c# html

我想创建一个包含两列的表格格式,其中每一行都有一个ProductTitle及其相应的URL。

我使用以下代码以表格格式提供信息。我在第二列显示了整个锚标记。

但我想只将文本显示为第二列中的链接。点击它应该打开URL页面。

DataTable dt = new DataTable();

dt.Columns.Add("ProductTitle");
dt.Columns.Add("Link");

DataRow dr = dt.NewRow();
dr["ProductTitle"] = "GOOGLE";
dr["Link"] = "<" + "a href=\"" + "http://www.google.com" + "\">Google" + "</a>";
dt.Rows.Add(dr);

Gridview1.DataSource = dt;
Gridview1.DataBind();

有人可以建议吗。

3 个答案:

答案 0 :(得分:1)

试试这个

dr["Link"] = "<a href='http://www.google.com'>Google</a>";

我试过

Label1.Text = "<a href='http://www.google.com'>Google</a>";

有效。

第二次尝试:

除了字符串,int .etc等.NET类型之外,我们无法保存其他任何东西,所以试试这样的asp:HyperLink

<ItemTemplate>
 <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("ProductTitle")%>' NavigateUrl='<%# Eval("Link") %>'></asp:HyperLink>
</ItemTemplate>

dr["ProductTitle"] = "Goole";
dr["Link"] = "http://www.google.com";

答案 1 :(得分:1)

您可以按如下方式修改.aspx文件:

    ...
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
        <Columns>
            <asp:BoundField DataField="ProductTitle" HeaderText="Product Title" />
            <asp:BoundField DataField="Link" HtmlEncode="false" HeaderText="Link" />
        </Columns>
    </asp:GridView>
    ...

因此,您应该通过设置AutoGenerateColumns="false"并格式化Columns的{​​{1}}部分来停用自动列生成功能。请注意链接呈现的关键元素,即GridView属性。您还可以在代码隐藏文件中设置所有内容:

HtmlEncode="false"

答案 2 :(得分:0)

实际上有一个专门针对您要做的事情而设计的专栏,它是HyperLinkField列。

<asp:HyperLinkField 
            HeaderText="Header"
            DataTextField="LinkText"
            DataNavigateUrlFields="LinkURL" 
            DataNavigateUrlFormatString="http://google.com/q={0}" />

然后,您可以确保您的数据源具有适当的链接文本列和导航网址字段。

如果您使用固定文本或固定网址来使用TextNavigateURL属性而不是数据...对应项,则可以对其进行配置,您可以使用或不使用格式字符串作为需要的。