2

首先:我知道这里已经有一些模糊的类似请求,但是没有一个可以完整地解决我的问题,我正在努力拼凑一个解决方案。

无论如何,所以我正在编写一个 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>"

我一生都无法弄清楚如何像我想要的那样动态地做这些事情。您的帮助将不胜感激。谢谢。

4

1 回答 1

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>
于 2012-08-01T14:46:43.403 回答