Asp.net GridView即使在DataBind()之后也不存在列

Asp.net GridView即使在DataBind()之后也不存在列,asp.net,gridview,Asp.net,Gridview,我有一个已经填充了数据的DataView(已验证为真) 然后,我将GridView的数据源设置为该DataView,并调用.DataBind()函数 绑定之后,我检查了GridView的列数(grid.Columns.count),结果显示为0。但它显示了15列的正确输出 此外,使用列的索引访问列将引发异常 那我怎么才能进入这个专栏呢 谢谢 编辑--其他信息: 实际上,我需要在列标题中添加一个“glyph”(向上/向下箭头),以显示正在排序的列及其方向。下面的代码是我正在使用的。问题是,列的计数

我有一个已经填充了数据的DataView(已验证为真)

然后,我将GridView的数据源设置为该DataView,并调用.DataBind()函数

绑定之后,我检查了GridView的列数(grid.Columns.count),结果显示为0。但它显示了15列的正确输出

此外,使用列的索引访问列将引发异常

那我怎么才能进入这个专栏呢

谢谢

编辑--其他信息:

实际上,我需要在列标题中添加一个“glyph”(向上/向下箭头),以显示正在排序的列及其方向。下面的代码是我正在使用的。问题是,列的计数始终为零

    for (int i = 0; i < dgData.Columns.Count; i++)
    {
        string colExpr = dgData.Columns[i].SortExpression;
        if (colExpr != "" && colExpr == dgData.SortExpression)
            item.Cells[i].Controls.Add(glyph);
    }
for(int i=0;i
编辑

试试这个,它有点混乱,因为它依赖于根据GridView-SortExpression测试linkbutton文本。Gridview ID为“测试”

如果您正在自动生成列,我认为不会设置列集合

您可以检查
行.Cells.Count
,或者如果需要列名,可以抓取HeaderRow,然后遍历单元格并抓取它们的.Text值

如果GridView是可排序的(例如,标题中有可单击的链接),那么要获取列名,您需要进行检查

foreach(Row r in GridView.Rows)
{
    if(r.RowType == HeaderRow)
    {
         r.Cells[0].Controls[0]; //Link Control is here.
    }
}   

您好,请查看我对这个问题的编辑。我实际上需要列中的SortExpression属性。您好,我应该在.Contains()中放置什么?
foreach(Row r in GridView.Rows)
{
    if(r.RowType == HeaderRow)
    {
         r.Cells[0].Controls[0]; //Link Control is here.
    }
}