这种问题是表格的通病,你若是设置datagrid的width为百分比的话,就容易出现这种问题,我还是觉得自己设定为象素宽的好,这样就不会换行了,但是推荐你还是用width,这样对浏览器的分辨率不同不存在兼容问题

解决方案 »

  1.   

    <asp:datagrid id="dg"  runat="server">
    <SelectedItemStyle Wrap="False"></SelectedItemStyle>
    <EditItemStyle Wrap="False"></EditItemStyle>
    <AlternatingItemStyle Wrap="False"></AlternatingItemStyle>
    <ItemStyle Wrap="False"></ItemStyle>
    <HeaderStyle Wrap="False"></HeaderStyle>
    <FooterStyle Wrap="False"></FooterStyle>
    <PagerStyle Wrap="False"></PagerStyle>
    </asp:datagrid>
    试试
      

  2.   

    Page_load:DataGrid1.Attributes.Add("style","word-break:keep-all;")
      

  3.   

    上面说的我都试过了,不行的,其实可能是datagrid的bug,或者生成的table里的<tr nowrap = 'nowrap'> 应该是<tr wrap = 'false'>,解决办法如下:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    for(int i = 0;i < e.Item.Cells.Count;i++)
    {
    e.Item.Cells[i].Attributes.Add("nowrap","true") ; } }
      

  4.   

    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
    <html>
       <script runat="server">
          int start_index;
          ICollection CreateDataSource() 
          {
             DataTable dt = new DataTable();
             DataRow dr;         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
             dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
     
             for (int i = start_index; i < start_index + ItemsGrid.PageSize; i++) 
             {
                dr = dt.NewRow();            dr[0] = i;
                dr[1] = "我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文sdfdsfdsfsd我是中文我是中文我是中文";
                dr[2] = 1.23 * (i+1);            dt.Rows.Add(dr);
             }         DataView dv = new DataView(dt);
             return dv;
          }      void Page_Load(Object sender, EventArgs e) 
          {
           ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");        
             if (!IsPostBack)
             {
                start_index = 0; 
                ItemsGrid.VirtualItemCount=100; 
             }
             BindGrid();      
          }      void Grid_Change(Object sender, DataGridPageChangedEventArgs e) 
          {       
             ItemsGrid.CurrentPageIndex = e.NewPageIndex;
             start_index = ItemsGrid.CurrentPageIndex * ItemsGrid.PageSize;
             BindGrid();     
          }      void BindGrid() 
          {
             ItemsGrid.DataSource=CreateDataSource();
             ItemsGrid.DataBind();     
          }
       </script>
    <body>
       <form runat="server">
          <asp:DataGrid id="ItemsGrid" runat="server"
               BorderColor="black"
               BorderWidth="1"
               CellPadding="3"
               AllowPaging="true"
               AllowCustomPaging="true"
               AutoGenerateColumns="false"
               OnPageIndexChanged="Grid_Change">         <PagerStyle NextPageText="Forward"
                         PrevPageText="Back"
                         Position="Bottom"
                         PageButtonCount="5"
                         BackColor="#00aaaa">
             </PagerStyle>         <AlternatingItemStyle BackColor="yellow">
             </AlternatingItemStyle>         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>         <Columns>
          
                <asp:BoundColumn HeaderText="Number" 
                     DataField="IntegerValue"/>            <asp:BoundColumn
                     HeaderText="Item" 
                     DataField="StringValue"/>            <asp:BoundColumn 
                     HeaderText="Price" 
                     DataField="CurrencyValue" 
                     DataFormatString="{0:c}">               <ItemStyle HorizontalAlign="right">
                   </ItemStyle>
       
                </asp:BoundColumn>         </Columns>
          
          </asp:DataGrid>
       </form></body>
    </html>
      

  5.   

    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
    <html>
       <script runat="server">
          int start_index;
          ICollection CreateDataSource() 
          {
             DataTable dt = new DataTable();
             DataRow dr;         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
             dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
             dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
     
             for (int i = start_index; i < start_index + ItemsGrid.PageSize; i++) 
             {
                dr = dt.NewRow();            dr[0] = i;
                dr[1] = "我是中文我是中文我.2354561531f1a sdf 3sd153 ds1g3 1sd是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文我是中文sdfdsfdsfsd我是中文我是中文我是中文";
                dr[2] = 1.23 * (i+1);            dt.Rows.Add(dr);
             }         DataView dv = new DataView(dt);
             return dv;
          }      void Page_Load(Object sender, EventArgs e) 
          {
           ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");        
             if (!IsPostBack)
             {
             BindGrid();  
             }
                
          }      void BindGrid() 
          {
             ItemsGrid.DataSource=CreateDataSource();
             ItemsGrid.DataBind();     
          }
          
       void Item_Created(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>"; 
       }   </script>
    <body>
       <form runat="server">
          <asp:DataGrid id="ItemsGrid" runat="server"
               BorderColor="black"
               OnItemDataBound="Item_Created"
               AutoGenerateColumns="false">         <PagerStyle NextPageText="Forward"
                         PrevPageText="Back"
                         Position="Bottom"
                         PageButtonCount="5"
                         BackColor="#00aaaa">
             </PagerStyle>         <AlternatingItemStyle BackColor="yellow">
             </AlternatingItemStyle>         <HeaderStyle BackColor="#00aaaa">
             </HeaderStyle>         <Columns>
          
                <asp:BoundColumn HeaderText="Number" 
                     DataField="IntegerValue"/>            <asp:BoundColumn
                     HeaderText="Item" 
                     DataField="StringValue"/>            <asp:BoundColumn 
                     HeaderText="Price" 
                     DataField="CurrencyValue" 
                     DataFormatString="{0:c}">               <ItemStyle HorizontalAlign="right">
                   </ItemStyle>
                   </asp:BoundColumn>
             </Columns>      
          </asp:DataGrid>
       </form>
    </body>
    </html>
      

  6.   

    把不想换行的加e.Item.Cells[1].Text = "<nobr>" + e.Item.Cells[1].Text + "</nobr>"; 
      

  7.   

    1 DataGrid1.Attributes.Add("style","word-break:keep-all;")
    2 把所有列的宽度都用具体数值写死(不用百分比)
    3 wrap
      

  8.   

    哪里有换行啊???
    <%@ Page Language="C#" AutoEventWireup="True" %>
    <%@ Import Namespace="System.Data" %>
    <html>
    <script runat="server">
    int start_index;
    ICollection CreateDataSource() 
    {
    DataTable dt = new DataTable();
    DataRow dr; dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
    dt.Columns.Add(new DataColumn("StringValue", typeof(string)));
    dt.Columns.Add(new DataColumn("CurrencyValue", typeof(string))); for (int i = start_index; i < start_index + ItemsGrid.PageSize; i++) 
    {
    dr = dt.NewRow();
    dr[0] = i;
    dr[1] = @"我是中文文字,I am English words,我不想换行,
    I don't wanna have new lines,欢迎访问 
    <a href='http://dotnet.aspx.cc/'>http://dotnet.aspx.cc/</a>,
    有好料啊:)";
    dr[2] = DateTime.Now.ToString();;

    dt.Rows.Add(dr);
    }

    DataView dv = new DataView(dt);
    return dv;
    }void Page_Load(Object sender, EventArgs e) 
    {
    //对于没有数字的内容,下面这行完全满足要求,但加了数字就不行,必须调用OnItemDataBound
    ItemsGrid.Attributes.Add("style","word-break:keep-all;word-wrap:normal");

    //下面这行是自动换行
    //ItemsGrid.Attributes.Add("style","word-break:break-all;word-wrap:break-word");

    if (!IsPostBack)
    {
    BindGrid();  
    }
    }void BindGrid() 
    {
    ItemsGrid.DataSource=CreateDataSource();
    ItemsGrid.DataBind();     
    }void Item_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>"; 
      e.Item.Cells[2].Text = "<nobr>" + e.Item.Cells[2].Text + "</nobr>"; 
    }
    }</script>
    <body>
    <form runat="server">
    <asp:DataGrid id="ItemsGrid" runat="server" BorderColor="black"
    OnItemDataBound="Item_DataBound" AutoGenerateColumns="false"><AlternatingItemStyle BackColor="#DEDEDE"></AlternatingItemStyle>
    <HeaderStyle BackColor="#EEEEFF" HorizontalAlign="Center"></HeaderStyle><Columns>
    <asp:BoundColumn HeaderText="序号" DataField="IntegerValue"/>
    <asp:BoundColumn HeaderText="文字" DataField="StringValue"/>
    <asp:BoundColumn HeaderText="价格" DataField="CurrencyValue" DataFormatString="{0:c}">
    <ItemStyle HorizontalAlign="right"></ItemStyle>
    </asp:BoundColumn>
    </Columns></asp:DataGrid>
    </form>
    </body>
    </html>
      

  9.   

    <nobr>所有浏览器都支持的,wrap在某些浏览器是不支持的