Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使动态gridview标题可单击_C#_Asp.net_.net_Gridview - Fatal编程技术网

C# 使动态gridview标题可单击

C# 使动态gridview标题可单击,c#,asp.net,.net,gridview,C#,Asp.net,.net,Gridview,我有一个动态gridview,标题行需要有超链接。我可以为静态网格使用下面的代码 对于静态网格: <asp:boundfield datafield="ID" headertext="ID" headerstyle-wrap="false" Sortexpression="ID"/> 但我如何实现动态网格呢 我使用下面的代码填充动态gridview headercell文本。除此之外,如何使标题单元格可单击 代码:从datatable动态填充gridview标题文本 if (e

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

对于静态网格:

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

但我如何实现动态网格呢

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

代码:从datatable动态填充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];
                }
            }
if(e.Row.RowType==DataControlRowType.Header)
{
字符串ID=ViewState[“ID”].ToString();
DataTable dtColumnNames=GetColumns(ID);
string[]strColumns=dtColumnText.Rows.OfType().Select(k=>k[1].ToString()).ToArray();
for(int i=0;i
一个简单的解决方案是只插入一个链接元素

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>";
                }
            }
if(e.Row.RowType==DataControlRowType.Header)
{
字符串ID=ViewState[“ID”].ToString();
DataTable dtColumnNames=GetColumns(ID);
string[]strColumns=dtColumnText.Rows.OfType().Select(k=>k[1].ToString()).ToArray();
for(int i=0;i
或者使用较新的C#语法

$”;
或者添加JavaScript调用有几种方法

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

e.Row.Cells[i].Text=”“;

实际上我没有传递任何URL,因为列是动态的。我需要在单击任何标题列时触发单击事件。这可能吗?我试了很多,但都没有成功。
e.Row.Cells[i].Text = "<a href='javascript:myFunction()'>" + strColumns[i] + "</a>";
e.Row.Cells[i].Text = "<a href='#' onclick='myFunction()'>" + strColumns[i] + "</a>";