c# - 动态创建具有一列作为超链接的数据表

标签 c# asp.net gridview hyperlink datatable

首先:我知道这里已经有一些模糊相似的请求,但没有一个能为我的问题提供完整的解决方案,我已经竭尽全力想拼凑出一个解决方案。

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

相关文章:

c# - 使用 MEF 在 Prism 中查看初始化时出现问题

c# - 读取 MQ 消息的头部

c# - GridView - 将焦点设置到特定单元格

c# - 你应该包装工作单元吗?

c# - Windows UWP应用中的MediaElement无法播放音频

asp.net - Ajax 工具包组合框中的列表项出现在错误的位置

javascript - 如果 div 的名称不是容器,Jquery 上下文菜单插件将停止工作?

asp.net - 如何强制在成功函数中完成的 DOM 修改保留在 jQuery.Ajax() 调用中?

css - 如何垂直显示 GridView 标题文本?

Android GridView 绘制分隔线