我使用的是下面这种方法,可是报错“ 索引超出范围”。
 
dataGrid1.DataSource = _dataSet.Tables["customers"]; 
 
DataGridTableStyle dgts = new DataGridTableStyle(); 
 
dgts.MappingName = "customers"; 
 
dataGrid1.TableStyles.Add(dgts); 
 
 
public void SetColWidth(DataGridTableStyle tableStyle, int colNum, int width)  
{            tableStyle.GridColumnStyles[colNum].Width = width; 
           tableStyle.DataGrid.Refresh(); 

 
private void button1_Click(object sender, System.EventArgs e) 
 { 
      DataGridTableStyle tableStyle = dataGrid1.TableStyles["customers"]; 
      SetColWidth(tableStyle, 1, 200); 
 }  

解决方案 »

  1.   

    <asp:BoundColumn DataField="ContactTitle" ItemStyle-Width="40px"></asp:BoundColumn>前台里可以这样写。我试过
      

  2.   

    Dim dt As New Data.DataTable
            dt.Columns.Add("a")
            dt.Columns.Add("ab")
            For i As Integer = 0 To 10
                Dim nr As DataRow = dt.NewRow
                nr.Item(0) = i
                nr.Item(1) = i.ToString + "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
                dt.Rows.Add(nr)
            Next
            Me.DataGrid1.DataSource = dt
            Me.DataGrid1.Refresh()
            Dim newStyles As New DataGridTableStyle
            newStyles.MappingName = "customers"
            Me.DataGrid1.TableStyles.Add(newStyles)
            Me.DataGrid1.TableStyles("customers").GridColumnStyles(0).Width = 100这个是哪里错了
      

  3.   

    楼主,需要创建格式列的this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();
    this.dataGridTableStyle1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {this.dataGridTextBoxColumn1});
      

  4.   

    try
    {
    DataGridTableStyle dtstyle=new  DataGridTableStyle();
    dtstyle.MappingName=ds.Tables["department"].ToString();
    dataGrid1.TableStyles.Clear();

    DataGridColumnStyle boolCol = new DataGridTextBoxColumn();
    boolCol.MappingName="dep_number";
    boolCol.HeaderText="学号";
    boolCol.Width=200;
    dtstyle.GridColumnStyles.Add(boolCol);
    dataGrid1.TableStyles.Add(dtstyle); }
      

  5.   

    public void SetGridStyleDataSouce_New(DataGrid Dg,DataTable Tb,string FrmName, bool AllowSorting,bool AllowAdd,int _right,string type,bool dg_readonly)
    {
    Dg.ReadOnly=dg_readonly; 
    DataGridTableStyle Dt=new DataGridTableStyle();
    DataGridTextBoxColumn Db;

    Tb.DefaultView.AllowNew=AllowAdd;//是否可自动增长
    if (Dg.TableStyles.Count>0)//如果此DataGrid已经存在一种样式则删除此样式
    {
    Dg.TableStyles.Remove(Dg.TableStyles[0]); //删除样式
    }
    Dg.DataSource=Tb;//设置DataGrid的数据源
    Dt.MappingName=Tb.TableName; int ColNum=Tb.Columns.Count;//得到Tb的列数
    for(int i=0;i<ColNum;i++)////重绘所有的列
    {
    Db=new DataGridTextBoxColumn();
    Db.TextBox.Name=Tb.Columns[i].ColumnName;//设置每一列的名字 注:为中文名
    Db.HeaderText=Tb.Columns[i].ColumnName;//设置每一列的列头为中文名
    Db.MappingName=Tb.Columns[i].ColumnName;
    Db.NullText="";//当Textbox为Null时转成空
    Db.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);
      
    switch(Tb.Columns[i].ColumnName)
    {
    case "a":
    Dt.PreferredColumnWidth= 60;
    break;
    case "b":
    Dt.PreferredColumnWidth= 50;
    break;
    case "c":
    Dt.PreferredColumnWidth= 100;
    break;
    }
    Dt.GridColumnStyles.Add(Db);//增加样式
    }
    Dt.AllowSorting=AllowSorting;//是否可排序 
    Dg.TableStyles.Add(Dt); //DATAGRID增加一种样式
    }
      

  6.   

    public void SetGridStyleDataSouce_New(DataGrid Dg,DataTable Tb,string FrmName, bool AllowSorting,bool AllowAdd,string type,bool dg_readonly)
    {
    Dg.ReadOnly=dg_readonly; 
    DataGridTableStyle Dt=new DataGridTableStyle();
    DataGridTextBoxColumn Db;

    Tb.DefaultView.AllowNew=AllowAdd;//是否可自动增长
    if (Dg.TableStyles.Count>0)//如果此DataGrid已经存在一种样式则删除此样式
    {
    Dg.TableStyles.Remove(Dg.TableStyles[0]); //删除样式
    }
    Dg.DataSource=Tb;//设置DataGrid的数据源
    Dt.MappingName=Tb.TableName; int ColNum=Tb.Columns.Count;//得到Tb的列数
    for(int i=0;i<ColNum;i++)////重绘所有的列
    {
    Db=new DataGridTextBoxColumn();
    Db.TextBox.Name=Tb.Columns[i].ColumnName;//设置每一列的名字 注:为中文名
    Db.HeaderText=Tb.Columns[i].ColumnName;//设置每一列的列头为中文名
    Db.MappingName=Tb.Columns[i].ColumnName;
    Db.NullText="";//当Textbox为Null时转成空
    Db.TextBox.DoubleClick += new EventHandler(TextBoxDoubleClickHandler);
      
    switch(Tb.Columns[i].ColumnName)
    {
    case "a":
    Dt.PreferredColumnWidth= 60;
    break;
    case "b":
    Dt.PreferredColumnWidth= 50;
    break;
    case "c":
    Dt.PreferredColumnWidth= 100;
    break;
    }
    Dt.GridColumnStyles.Add(Db);//增加样式
    }
    Dt.AllowSorting=AllowSorting;//是否可排序 
    Dg.TableStyles.Add(Dt); //DATAGRID增加一种样式
    }
      

  7.   

    这种问题楼主单步调试就能找到问题。
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c44c.aspx
      

  8.   

    DataGridTextBoxColumn dataGridTextBoxColumn = new DataGridTextBoxColumn ();
    dataGridTextBoxColumn.MappingName = "Date";
    dataGridTextBoxColumn.HeaderText = "日期";
    dataGridTextBoxColumn.Format = "yyyy年MM月dd日";
    dataGridTextBoxColumn.Width = 60;customDataGridTableStyle.GridColumnStyles.Add (dataGridTextBoxColumn);