绑定后使gridview列不可见-索引超出范围异常
本文关键字:索引 异常 范围 gridview 绑定 | 更新日期: 2023-09-27 18:17:40
我在一个按钮单击事件绑定数据到gridview。绑定数据后,我正在检查用户是否为Admin。如果用户不是管理员,我想让一些列不可见。但是它抛出了'Index out of range exception'。下面是我的代码。
protected void btn_Click(object sender, EventArgs e)
{
GridStaffBindData();
sqlCon.Open();
SqlCommand checkAdminCmd = new SqlCommand("query", sqlCon);
object admin = checkAdminCmd.ExecuteScalar();
if(admin == null)
{
gridStaff.Columns[0].Visible = false; //throwing exception here
}
sqlCon.Close();
}
我猜。我一定是漏掉了什么简单的东西。
我的GridStaffBind函数非常简单。我认为这没有什么问题。总之,下面是代码。
private void GridStaffBindData()
{
sqlCon.Open();
string sqlCommand = "select command";
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sqlCommand, sqlCon);
da.Fill(dt);
sqlCon.Close();
gridStaff.DataSource = dt;
gridStaff.DataBind();
}
当我注释那行异常代码时,数据完美地绑定到gridview。所以,我认为数据没有问题。
谢谢
终于找到了
如果gridview autogeneratecollans ="true",那么gridview的列数总是为零。因此,我将其设置为false,并将所有列定义为asp:Boundfields。
显示数据表格列。在使用数据表
进行数据绑定后,Count总是0。感谢大家的贡献
在使用它之前应该检查列数,以避免像这样的'Index out of range exception'
if(admin == null && gridStaff.Columns.Count>0)
{
gridStaff.Columns[0].Visible = false; //throwing exception here
}
嗨,你在GridStaffBindData()中做什么?函数也许你的数据源仍然是空的,然后你得到异常