首先:我知道这里已经有一些模糊相似的请求,但没有一个能为我的问题提供完整的解决方案,我已经竭尽全力想拼凑出一个解决方案。
无论如何,我正在编写一个 Web 界面以从 RESTful API 获取一些信息。我正在生成一个数据表,我通过这样的 gridview 显示它:
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>"
我这辈子都想不出如何按照我的意愿动态地做这些事情。非常感谢您的帮助。谢谢。
最佳答案
一种解决方案是将您的列值设为 URL,然后对于绑定(bind)列,设置 HtmlEncode = false
.这意味着,在你的 foreach
你会做类似 row['link'] = "<a href='..'>..</a>"
的事情.当它被绑定(bind)时,它应该输出为 HTML。
或者,您可以连接到 gridview 上的 OnRowDataBound 事件并在后面的代码中操作该值。
或者,最后,您可以创建一个适当绑定(bind)的 ItemTemplate 列:
<asp:TemplateField HeaderText="Seniority">
<ItemTemplate>
<a href='example.com/<%# Eval("name")) %>'><%# Eval("name")) %></a>
</ItemTemplate>
</asp:TemplateField>
关于c# - 动态创建具有一列作为超链接的数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11761650/