数据库自动绑定datagrid,如何设置列宽?
aspx:
<asp:datagrid id="DG_Title" runat="server" CellSpacing="1" CellPadding="5" BorderWidth="0px" Width="790px"
AllowPaging="True" AutoGenerateColumns="True" PageSize="15">
<SelectedItemStyle Wrap="False"></SelectedItemStyle>
<EditItemStyle Wrap="False"></EditItemStyle>
<AlternatingItemStyle Wrap="False" HorizontalAlign="Center" CssClass="datagridalteritem" VerticalAlign="Middle"></AlternatingItemStyle>
<ItemStyle Wrap="False" HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
<HeaderStyle Wrap="False" HorizontalAlign="Center" CssClass="datagridheader" VerticalAlign="Middle"></HeaderStyle>
<PagerStyle Visible="False" Wrap="False"></PagerStyle>
</asp:datagrid>CS:
private void button1_Click(object sender, System.EventArgs e)
 {
    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=zy-server;database=ztaifdata;uid=sa;password=zhiyou");
    conn.Open();
    System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter("select * from sysobjects",conn);
    System.Data.DataSet dt = new System.Data.DataSet();
    da.Fill(dt,"sysobjects");
    dataGrid1.SetDataBinding(dt,"sysobjects");      
  } 

解决方案 »

  1.   

    如果你不想在设计页面的时候设置列宽,可以在ItemCreated事件里,设置列宽 switch (e.Row.RowType)
                {
                    case DataControlRowType.Header:
                        //第一行表头
                        TableCellCollection tcHeader = e.Row.Cells;
                        tcHeader[5].Attributes.Add("colspan", "2"); //跨Column
                        tcHeader[5].Text = "操作";
                        tcHeader[6].Visible = false;
                        break;
                }这个是gridview的,datagrid也差不多,只不过gridview是row datagrid是item
      

  2.   

       //设置dataGrid列的宽度
        GridColumnStylesCollection myDataGridColStyle = dataGrid1.TableStyles[0].GridColumnStyles; 
        myDataGridColStyle["列明"].Width = 40;    
        myDataGridColStyle["ContactUserName"].Width = 100;参考
      

  3.   

    dataGrid1.TableStyles["A"].GridColumnStyles[col].Width = width;下面是一个自动设值列宽的函数,可以参考一下:
    /// autosize the first column
    /// </summary>
    /// <param name="col">column number</param>
    private void AutoSizeCol(int col) 

    float width = 0; 
    int numRows = ((DataTable) dataGrid1.DataSource).Rows.Count; 
    Graphics g = Graphics.FromHwnd(dataGrid1.Handle); 
    StringFormat sf = new StringFormat(StringFormat.GenericTypographic); 
    SizeF size; 
    for(int i = 0; i < numRows; ++ i) 

    size = g.MeasureString(dataGrid1[i, col].ToString(), dataGrid1.Font, 500, sf); 
    if(size.Width > width) 
    width = size.Width; 
    } g.Dispose(); 
    dataGrid1.TableStyles["A"].GridColumnStyles[col].Width = (int) width + 16; 
    }
      

  4.   

    protected void datagrid_ItemCreated(object sender, DataGridItemEventArgs e)
    {
    ListItemType itemType = e.Item.ItemType;
    if (itemType == ListItemType.Header)
    {
    for (int i = 0; i < e.Item.Cells.Count; i++)
    {
    e.Item.Cells[i].Width = Unit.Pixel(80);
    e.Item.Cells[i].Wrap = false;
    }
    }
    }
      

  5.   

        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataKeyNames="ID" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                        ReadOnly="True" SortExpression="ID" />
                    <asp:BoundField DataField="UserName" HeaderText="UserName" 
                        SortExpression="UserName">
                        <HeaderStyle Width="100px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Password" HeaderText="Password" 
                        SortExpression="Password" />
                    <asp:BoundField DataField="Power" HeaderText="Power" SortExpression="Power" />
                    <asp:BoundField DataField="LoginTimes" HeaderText="LoginTimes" 
                        SortExpression="LoginTimes" />
                </Columns>
            </asp:GridView>
        </div>
      

  6.   

    <asp:BoundField DataField="UserName" HeaderText="UserName" SortExpression="UserName">
        <HeaderStyle Width="100px" />
    </asp:BoundField>