【问题标题】:asp c# gridview bind to datatable custom lookasp c# gridview 绑定到数据表自定义外观
【发布时间】:2023-03-11 04:10:01
【问题描述】:

我有一个绑定到数据表的gridview。 绑定后,我想自定义 gridview 外观,但列似乎为空。 我在页面上看到了数据,所以它就在那里, 但是当我写GridView1.Columns[0].Visible = false; 我得到一个例外:index out of range

如何自定义?

【问题讨论】:

  • 你要在哪里设置这个 GridView1.Columns[0].Visible = false ?
  • 你能发布更多代码吗,我们需要看看发生了什么。

标签: asp.net gridview


【解决方案1】:

不知道你在哪里设置的列Visible = false

但它的正确位置是在Databound Event of Gridview

 protected void GridView1_DataBound(object sender, EventArgs e)
{
    if (GridView1.Columns.Count > 0)
    {
        GridView1.Columns[0].Visible = false;
    }
}

【讨论】:

  • @Yuval;编辑我的答案。立即尝试。
  • 您的网格视图是否包含数据?此条件仅在您的 gridview 有数据时有效。
  • 我将它绑定到数据表,然后我尝试隐藏第 1 列并得到异常
【解决方案2】:

已编辑

   protected void GridView1_DataBound(object sender, EventArgs e)
        {
            try
            {
                GridView1.Columns[0].Visible = false;
            }
            catch
            {
            }
        }

我不知道你为什么这样做,但是你可以通过这个事件自定义网格视图。

看看这个link

【讨论】:

  • 这将隐藏行.. 我想隐藏列并更改外观
  • 我在单击按钮时执行此代码。我想做 GridView1.Columns[0].Visible = false;接下来,但我得到了例外。 DataRow workRow = table1.NewRow(); workRow["Field"] = FieldsDL.SelectedItem; workRow["FieldIndex"] = FieldsDL.SelectedValue; table1.Rows.Add(workRow); ViewState["table"] = table1; GridView1.DataSource = table1; // GridView1.AutoGenerateColumns = false; GridView1.DataBind();
  • @Yuval,当你说“改变外观”时,我认为 CSS,你真正指的是什么?
【解决方案3】:

我遇到了同样的问题,我在这个网站上找到了解决方法 http://ramanisandeep.net/2009/04/07/how-to-hide-gridview-column-programmatically/

检查 else 子句。

基本上,您会遍历所需列的标题行和所需列的每个单元格,并将可见性设置为 false。

我不确定这是否是最推荐的方法,但在寻找了一段时间的解决方案后,我很高兴并且会使用它。

祝你好运,

【讨论】:

    猜你喜欢
    • 2018-11-24
    • 1970-01-01
    • 2010-09-21
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多