数据库自动绑定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");
}
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");
}
{
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
GridColumnStylesCollection myDataGridColStyle = dataGrid1.TableStyles[0].GridColumnStyles;
myDataGridColStyle["列明"].Width = 40;
myDataGridColStyle["ContactUserName"].Width = 100;参考
/// 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;
}
{
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;
}
}
}
<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>
<HeaderStyle Width="100px" />
</asp:BoundField>