1、指定宽度:
{ //为了返回指定宽度的列
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName =Tablename;//adapter.Fill(ds,Tablename);需要有映射先对应
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(tableStyle);
SetSizeTable();
this.dataGrid1.DataSource = ds.Tables[Tablename];
}
#region 列定义
/// <summary>
/// 设置列的尺寸
/// </summary>
public void SetSizeTable()
{
int numCols = ds.Tables[0].Columns.Count;
for (int i = 0; i < numCols; ++i)
AutoSizeCol(i, numCols);
}
public void AutoSizeCol(int col, int numCols)
{ /*手机上需要增加一下:
System.Windows.Forms.DataGridColumnStyle myColStyle = new DataGridTextBoxColumn();
myColStyle.MappingName = ds.Tables[0].Columns[col].ColumnName;
myColStyle.Width = 100;
myColStyle.HeaderText = ds.Tables[0].Columns[col].ColumnName;
dataGrid1.TableStyles[ds.Tables[0].TableName].GridColumnStyles.Add(myColStyle);
*/
dataGrid1.TableStyles[Tablename].GridColumnStyles[col].Width = (int)(240 / numCols);
}
public 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["customers"].GridColumnStyles[col].Width = (int) width;
}
#endregion