我页面上放了一个gridview
 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("id");
            dt.Columns.Add("GrupName");
            dt.Columns.Add("safe");
            dt.Rows.Add(new object[] { 0, "营业部", "安全" });
            dt.Rows.Add(new object[] { 1, "市场部", "安全" });
            dt.Rows.Add(new object[] { 2, "研发部","安全" });
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();           
        }
            }
 protected void Button1_Click(object sender, EventArgs e)
    {
       Response.Write(GridView1.Columns.Count);    }
点击按钮输出是0为什么

解决方案 »

  1.   

    因为你是给DataTable加的Column,而GridView绑定DT,相当于是引用DataTable,所以GridView的Column.Count为0.
      

  2.   

    这样为什么就是0我明明给girdview绑定了列的。
      

  3.   

     <asp:GridView ID="GridView1" runat="server">
      </asp:GridView>
    前台这样写,是没有给GridView1定义列的,默认DataTable(数据源)的列名,所以为0
    这样写,就可以自定义列 
     <asp:GridView ID="GridView1" runat="server"><Columns>
                    <asp:BoundField DataField="id" />
                    <asp:BoundField DataField="GrupName" />
                    <asp:BoundField DataField="safe" />
                </Columns>
      </asp:GridView>
      

  4.   

    那如果我想隐藏这样动态绑定的列怎么办。
    这样
     <asp:GridView ID="GridView1" runat="server"><Columns>
                    <asp:BoundField DataField="id"   HeaderText="编号"/>
                    <asp:BoundField DataField="GrupName" HeaderText="分组名" />
                    <asp:BoundField DataField="safe" HeaderText="。" />
                </Columns>
      </asp:GridView>
      

  5.   

    那如果我想隐藏这样动态绑定的列怎么办。
    这样
     <asp:GridView ID="GridView1" runat="server"><Columns>
                    <asp:BoundField DataField="id"   HeaderText="编号"/>
                    <asp:BoundField DataField="GrupName" HeaderText="分组名" />
                    <asp:BoundField DataField="safe" HeaderText="。" />
                </Columns>
      </asp:GridView>

    不可以这样会出现2组数据
      

  6.   

    设置GridView1的属性AutoGenerateColumns="false"