自定義DataGrid的列寬,數(shù)據(jù)源并非直接從DataSet直接拖過來,而是動態(tài)添加,不多說,部分代碼如下:
//重繪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風(fēng)格??
??????????????? i++;
??????????? }
??????????? this.HousedataGrid.TableStyles.Add(ts);
??????????? this.HousedataGrid.TableStyles[0].GridColumnStyles[0].Width = 70;?? //第一列的寬度??
??????????? this.HousedataGrid.TableStyles[0].GridColumnStyles[0].HeaderText = "房屋編號"; //第一列的標(biāo)題??
??????????? this.HousedataGrid.TableStyles[0].GridColumnStyles[1].Width = 200;?? //第二列的寬度??
??????????? this.HousedataGrid.TableStyles[0].GridColumnStyles[1].HeaderText = "YYYYY"; //第二列的標(biāo)題??
??????????? this.HousedataGrid.Refresh();????
?????????? //
相類似的另一種樣式:
private DataView dv1,dv2;
private DataGridTableStyle dgts;
private void frmChhd_Resize(object sender, System.EventArgs e)
{
//調(diào)整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;
}
}