我想创建一个包含两列的表格格式,其中每一行都有一个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();
有人可以建议吗。
答案 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}" />
然后,您可以确保您的数据源具有适当的链接文本列和导航网址字段。
如果您使用固定文本或固定网址来使用Text
或NavigateURL
属性而不是数据...对应项,则可以对其进行配置,您可以使用或不使用格式字符串作为需要的。