首先关闭:我知道这里已经有一些模糊的类似请求了,但是没有一个能够完全解决我的问题,而且我最终试图拼凑出一个解决方案。
无论如何,所以我正在编写一个Web界面来从RESTful API获取一些信息。我正在生成一个数据表,我通过这样的网格视图显示:
DataTable table = new DataTable();
table.Columns.Add("entry name");
table.Columns.Add("col1");
table.Columns.Add("col2");
table.Columns.Add("etc");
foreach(string name in GetNames())
{
DataRow row = table.NewRow();
row["name"] = name;
row["col1"] = SomeMethod(name);
row["col2"] = SomeOtherMethod(name);
row["etc"] = YouGetTheIdea(name);
table.Rows.Add(row);
}
GridView1.DataSource = table;
GridView1.DataBind();
到目前为止一切都很好。我真正想要的是“名称”列是超链接,这样他们可以调用名称作为参数的方法;或链接到网站,名称作为URL的一部分,即如下:
"<a href:'www.example.com/" + name + ".csv'>" + name + "</a>"
我不能为我的生活弄清楚如何动态地按照我的意愿做这些事情。非常感谢您的帮助。感谢。
答案 0 :(得分:0)
一种解决方案是将列值作为URL,然后对于绑定列,设置HtmlEncode = false
。这意味着,在您的foreach
中,您会执行row['link'] = "<a href='..'>..</a>"
之类的操作。绑定时,它应输出为HTML。
或者,您可以在gridview上挂钩OnRowDataBound事件并操纵后面代码中的值。
或者,最后,您可以创建一个适当绑定的ItemTemplate列:
<asp:TemplateField HeaderText="Seniority">
<ItemTemplate>
<a href='example.com/<%# Eval("name")) %>'><%# Eval("name")) %></a>
</ItemTemplate>
</asp:TemplateField>