Gridview中使用AutoGenerateColumns="true",也就是自动填充数据,所以弄的列名排放不好看,我想列不换行,这样就能自动调整宽度,为什么Gridview1.Columns[0]  找不到呀,希望大家帮我下,谢谢。 

解决方案 »

  1.   

    this.dataGridView1.Columns["印家"].Width = 120;
      

  2.   

    1. 自动生成的数据栏无法通过GridView.Columns访问到2. 如果希望表格中所有内容都不换行,那很容易,在表格属性中加上样式就行:
    <asp:GridView ID="GridView1" runat="server"  style="white-space:nowrap" ... 3. 如果要对每一个列单独控制,那就要麻烦点,在GridView前面加上一段样式设定:<style type="text/css">
    #GridView1 tr td:first-child { width: 100px } /* 第一列 */
    #GridView1 tr td:first-child+td { width: 200px } /* 第二列 */
    #GridView1 tr td:first-child+td+td { width: 300px } /* 第三列 */
    </style>(注意如果table-layout不是fixed,列宽会自动调整,不一定会等于你设定的值)4. 上面这个方法只在IE7/8,FireFox下有效,如果要支持IE5/6,那就更麻烦了,可以考虑用jquery动态去设定列宽。
      

  3.   

    给你写一个吧  把下面的if语句写在 RowCreated事件里面!
        protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[0].Width = 480;
                e.Row.Cells[1].Width = 200;
            }
        }
      

  4.   

    GridView1.Columns[1].HeaderStyle.Width = 200;for (int i = 0; i < GridView1.Columns.Count; i++)
            {
              GridView1.Columns[i].ItemStyle.Width = new Unit("100");
            }