【问题标题】:Make dynamic gridview header clickable使动态gridview标题可点击
【发布时间】:2018-06-30 23:06:00
【问题描述】:

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

对于静态网格:

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

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

我正在使用下面的代码来填充动态 gridview headercell 文本。最重要的是如何使标题单元格可点击。

代码:从数据表动态填充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];
                }
            }

【问题讨论】:

    标签: c# asp.net .net gridview


    【解决方案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>";
    

    【讨论】:

    • 实际上我没有传递任何 URL,因为这些列是动态的。单击任何标题列时,我需要触发单击事件。这可能吗?我尝试了很多,但没有成功。
    猜你喜欢
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多