自定义DataGrid的列宽,数据源并非直接从DataSet直接拖过来,而是动态添加,不多说,部分代码如下:
//重绘DataGrid的每个列
DataGridTableStyle ts = new DataGridTableStyle();
ts.MappingName = RealEstatePDA.Util.DataBase.DataViews.getInstance().BuildingLocationDataView.Table.TableName; //如果绑定的是Datatable,这里要变一下
int numCols = RealEstatePDA.Util.DataBase.DataViews.getInstance().BuildingLocationDataView.Table.Columns.Count;
int i = 0;
DataGridTextBoxColumn aColumnTextColumn;
while (i < numCols) //重绘所有的列
{
aColumnTextColumn = new DataGridTextBoxColumn();
aColumnTextColumn.MappingName = RealEstatePDA.Util.DataBase.DataViews.getInstance().BuildingLocationDataView.Table.Columns[i].ColumnName;
ts.GridColumnStyles.Add(aColumnTextColumn); //增加一种自定义的column风格
i++;
}
this.HousedataGrid.TableStyles.Add(ts);
this.HousedataGrid.TableStyles[0].GridColumnStyles[0].Width = 70; //第一列的宽度
this.HousedataGrid.TableStyles[0].GridColumnStyles[0].HeaderText = "房屋编号"; //第一列的标题
this.HousedataGrid.TableStyles[0].GridColumnStyles[1].Width = 200; //第二列的宽度
this.HousedataGrid.TableStyles[0].GridColumnStyles[1].HeaderText = "YYYYY"; //第二列的标题
this.HousedataGrid.Refresh();
//
相类似的另一种样式:
private DataView dv1,dv2;
private DataGridTableStyle dgts;
private void frmChhd_Resize(object sender, System.EventArgs e)
{
//调整dataGrid1的列宽
if(dv1!=null)
{
//添加模板列
if(dataGrid1.TableStyles.Count==0)
{
dgts.MappingName=dv1.Table.TableName;
dataGrid1.TableStyles.Add(dgts);
}
int i=dataGrid1.Width/6-10;
dataGrid1.TableStyles[0].GridColumnStyles[0].Width=i*2;
dataGrid1.TableStyles[0].GridColumnStyles[1].Width
=dataGrid1.TableStyles[0].GridColumnStyles[2].Width
=dataGrid1.TableStyles[0].GridColumnStyles[3].Width
=dataGrid1.TableStyles[0].GridColumnStyles[4].Width=i;
}
}