使动态gridview标题可点击

时间:2018-01-22 10:33:49

标签: c# asp.net .net gridview

我有一个动态gridview,标题行需要有超链接。我可以将下面的代码用于静态网格。

对于静态网格:

<asp:boundfield datafield="ID" headertext="ID" headerstyle-wrap="false" Sortexpression="ID"/>

但我怎样才能实现动态网格。

我正在使用下面的代码来填充动态gridview标题单元格文本。除此之外,我如何使标题单元格可以点击。

代码:从数据表

动态填充gridview标题文本
if (e.Row.RowType == DataControlRowType.Header)
            {
                string ID = ViewState["ID"].ToString();
                DataTable dtColumnNames = GetColumns(ID);
                string[] strColumns = dtColumnText.Rows.OfType<DataRow>().Select(k => k[1].ToString()).ToArray();
                for (int i = 0; i < strColumns.Length; i++)
                {
                    e.Row.Cells[i].Text = strColumns[i];
                }
            }

1 个答案:

答案 0 :(得分:-1)

一个简单的解决方案就是插入一个链接元素。

if (e.Row.RowType == DataControlRowType.Header)
            {
                string ID = ViewState["ID"].ToString();
                DataTable dtColumnNames = GetColumns(ID);
                string[] strColumns = dtColumnText.Rows.OfType<DataRow>().Select(k => k[1].ToString()).ToArray();
                for (int i = 0; i < strColumns.Length; i++)
                {
                    e.Row.Cells[i].Text = "<a href='myUrl'>" + strColumns[i] + "</a>";
                }
            }

或更新的C#语法

$"<a href='myUrl'>{ strColumns[i] }</a>";

或添加JavaScript调用有几种方法

e.Row.Cells[i].Text = "<a href='javascript:myFunction()'>" + strColumns[i] + "</a>";

e.Row.Cells[i].Text = "<a href='#' onclick='myFunction()'>" + strColumns[i] + "</a>";