【问题标题】:Making gridview column invisible after binding - Index out of range exception绑定后使gridview列不可见-索引超出范围异常
【发布时间】:2014-08-12 09:20:58
【问题描述】:

我在按钮单击事件中将数据绑定到 gridview。绑定数据后,我正在检查用户是否为管理员。如果用户不是管理员,我想让一些列不可见。但它正在抛出“索引超出范围异常”。下面是我的代码。

    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();
    }

我猜。 tt 一定是我在这里缺少的一些简单的东西。

我的 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。所以,我认为数据没有错。

谢谢

【问题讨论】:

  • 你能显示 GridStaffBindData() 的代码吗?看起来 gridStaff 尚未填充,因此索引 0 处没有列,因此出现异常。
  • 嗨,用 GridStaffBindData 功能更新了我的代码
  • 您是否检查过 dt 是否包含数据?如果这是空的,那么 gridStaff 也将是空的,因此在索引 0 处没有列。
  • 另外,你到底是怎么想的 string slqCommand = "select command";在做什么?
  • 这里发生了一些奇怪的事情。我注释了问题代码行并开始调试。 'dt' 没有数据。然后我接受查询并在 SSMS 中执行,它在那里显示了一些数据。我按 F5 查看最终结果,gridview 绑定了数据。发生了什么??啊

标签: c# asp.net gridview data-binding indexoutofrangeexception


【解决方案1】:

终于找到了。

如果 gridview autogeneratecolumns="true",则 gridview 列数始终为零。因此,我将其设置为 false 并将所有列定义为 asp:Boundfields。

GridView Column.Count is always 0 after databind with a datatable

感谢你们的贡献

【讨论】:

    【解决方案2】:

    您应该在使用它之前检查列数以避免像这样的“索引超出范围异常”

       if(admin == null && gridStaff.Columns.Count>0)
        {
          gridStaff.Columns[0].Visible = false; //throwing exception here
        } 
    

    【讨论】:

      【解决方案3】:

      嗨,你在 GridStaffBindData() 中做什么;功能 也许你的数据源仍然是空的,然后你得到异常。

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多