//换行
DataGrid1.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
当内容为数字 ,则必须
void DataGrid1_DataBound(Object sender, DataGridItemEventArgs e) 
{
  if( e.Item.ItemType == ListItemType.Item ||
    e.Item.ItemType == ListItemType.AlternatingItem)
   e.Item.Cells[1].Text = "<nobr>" + e.Item.Cells[1].Text + "</nobr>"; 
}或者
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   if(e.Item.ItemType ==ListItemType.Header||e.Item .ItemType==ListItemType.Item ||e.Item .ItemType ==ListItemType.AlternatingItem)
   {
    for(int i=0;i<e.Item .Cells .Count ;i++)
    {
     e.Item .Cells [i].Attributes .Add ("nowrap","nowrap");
    }
   }
  }
 
//自动换行
DataGrid1.Attributes.Add("style","word-break:break-all;word-wrap:break-word");

解决方案 »

  1.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=A27CA611-2DE7-432D-8DBC-1512CEFDAA53
      

  2.   

    DataGrid1.DataSource=dt.DefaultView;
    DataGrid1.DataBind();for(int i=0;i< DataGrid1.Columns.Count;i++)
    {
    DataGrid1.Columns[1].ItemStyle.Width=sWidth[i];
    }只在预设int[] sWidth={....};宽度数组有何不可? 
      

  3.   

    好象是我没说的很明白!!我现在使用的是WinForm中的DataGrid,并且我的数据源是来自对WEBSERVICE的调用
    返回的一个DataTable,事先是不可能知道每列的内容的,并且希望能实现if (列内容长度 < 100)
    {
       列宽 = 列内容长度;
    }
    else
    {
       列宽 = 100;
       自动换行处理;
    }
    这样又该如何处理啊???
      

  4.   

    首先点击dataGrid --> 右键 --> "属性生成器" --> "格式" --> 找出相应的列, 有个"单元格内自动换行", 打勾就可以了
      

  5.   

    DataGrid1.DataSource=dt.DefaultView;for(int i=0;i< DataGrid1.Columns.Count;i++)
    {
    if(DataGrid1.Columns[1].ItemStyle.Width>100)DataGrid1.Columns[1].ItemStyle.Width=100;
    }
      

  6.   

    winform的datagrid没有像web中的datagrid设置列宽的功能啊~~
      

  7.   

    welshem(天堂客) 我在winform中设置了列宽后确实能够自动换行
    但有个前提条件,需要我选中已经设置列宽度的
    某个单元格,才能看见里面的内容确实是自动换了行的但那些没被选中的单元格仍然是只有横向的一行内容。如何才能设置为类似EXCL中的单元格自动换行功能,
    在数据提取完后就自动的根据单元格的宽度换为多行
    进行数据的显示若能再加上自适应行宽度就再好不过了!!谢谢了!!