我有一个已经填充了数据的DataView(已经验证这是真的)。
然后我将GridView的DataSource设置为该DataView并调用.DataBind()函数。
绑定后,我检查了我的GridView(grid.Columns.Count)的列数,它显示为0.但它显示的是15列的正确输出。
此外,使用索引访问列将引发异常。
如何访问该列呢?
谢谢!
编辑 - 附加信息:
我实际上需要在列标题中添加“字形”(向上/向下箭头)以显示正在排序的列及其方向。下面的代码就是我正在使用的代码。问题是,Columns.Count始终为零。
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);
}
答案 0 :(得分:2)
修改强>
试试这个,它有点难看,因为它依赖于对GridView SortExpression测试linkbutton文本。 Gridview ID是“test”
protected void test_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
foreach (TableCell tc in e.Row.Cells)
{
if(test.SortExpression.Contains( (tc.Controls[0] as LinkButton).Text ))
tc.Controls.Add( glyph )
}
}
}
如果您要自动生成列,我认为不会设置列集合...
您可以检查Row.Cells.Count
或者如果您需要列名称,请抓住HeaderRow,然后遍历Cells&amp;抓住他们的.Text价值。
如果GridView是可排序的(例如标题中有可点击的链接,那么要获取列名,您需要检查
foreach(Row r in GridView.Rows)
{
if(r.RowType == HeaderRow)
{
r.Cells[0].Controls[0]; //Link Control is here.
}
}