Solved

.net datagrid autoGenerateColumns=true words wrap, how to prevent?

Posted on 2004-03-31
4
2,154 Views
Last Modified: 2012-08-13

Hello,

I am trying to prevent the words from wrapping in the DataGrid cells when the datagrid is autogenerating the columns.  I have used "ItemStyle-Wrap=False AlternatingItemStyle-Wrap=False" of the datagrid tag and "Wrap=False" of the ItemStyle tag.  Nothing works!  

Any help would be great!
0
Comment
Question by:ee_id
  • 2
4 Comments
 
LVL 10

Accepted Solution

by:
Kavar earned 500 total points
Comment Utility
its a bug...
kb323169

RESOLUTION
To work around this problem, make sure that every column of the DataGrid has the ItemStyle Wrap property explicitly set to False as follows:
<ItemStyle Wrap="False"></ItemStyle>
                        
You must create the DataGrid Web control such that the data-bound columns of the DataGrid are added individually. For each column, click to clear the Wrap text within cell check box for its header, its footer, and its item objects as appropriate. To do this, follow these steps:
Follow these steps to create a new ASP.NET Web application:
Start Microsoft Visual Studio .NET.
On the File menu, point to New, and then click Project.
In the New Project dialog box, click Visual Basic Projects under Project Types, and then click ASP.NET Web Application under Templates.
In the Location box, replace the WebApplication# default name with DataGridApp. If you are using the local server, you can leave the server name as http://localhost. The resulting Location box appears as follows:
http://localhost/DataGridApp

In Solution Explorer, right-click WebForm1.aspx, click Rename, and then type WrapTest.aspx.
In Design view, drag a DataGrid Web control from the toolbox to the Web form.
In Solution Explorer, right-click the WrapTest.aspx file, and then click View Code.
Add the following code in the WrapTest.aspx.vb file just before "namespace DataGridApp":
Imports System.Data.SqlClient
                              
Add the following code to the Page_Load event handler:
 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Add user code to initialize the page here.
        If Not IsPostBack Then
            Dim conn As New SqlConnection("server=localhost;User ID=sa;Password=password;Initial Catalog=northwind;")
            Dim da As New SqlDataAdapter("select * from customers", conn)
            Dim ds As New DataSet()
            da.Fill(ds, "customers")
            DataGrid1.DataSource = ds
            DataGrid1.DataBind()
            conn.Close()
            ds = Nothing
            conn = Nothing
        End If
    End Sub
                                    
NOTE: You must modify the connection string as appropriate for your system database settings.
In Solution Explorer, right-click the WrapTest.aspx file, and then click View Designer.
Right-click the DataGrid control, and then click Property Builder.
Click Columns in the left pane, and then click to clear the Create columns automatically at run time check box.
Follow these steps to add each of the columns explicitly:
In the Available Columns list, click Bound Column, and then transfer this column to the Selected Columns list in the right pane.
Type Customer ID in the Header text box, and then type CustomerID in the Data Field box.
Click Format in the left pane. Under Objects, expand Columns and Column[0], and then select the objects (header, items, footer) that you want to disable text wrapping for. Click to clear the Wrap text within cell check box, and then click Apply.
Repeat steps 10a through 10c to create other data-bound columns in succession. In the Data Field box, type CompanyName, ContactName, ContactTitle, Address, City, and so on. Make sure that you click to clear the Wrap text within cell check box for each column.
Click OK in the DataGrid1 Properties dialog box.

NOTE: The column names under the Format functionality appear as Column[1], Column[2], and so on when you add more columns. The final HTML code for the DataGrid1 control appears as follows:
<asp:datagrid id="DataGrid1" runat="server" AutoGenerateColumns="False">
    <Columns>
      <asp:BoundColumn DataField="CustomerID" HeaderText="Customer ID">
          <ItemStyle Wrap="False"></ItemStyle>
      </asp:BoundColumn>
      <asp:BoundColumn DataField="CompanyName" HeaderText="Company Name">
          <ItemStyle Wrap="False"></ItemStyle>
      </asp:BoundColumn>
      <asp:BoundColumn DataField="ContactTitle" HeaderText="Contact Title">
          <ItemStyle Wrap="False"></ItemStyle>
      </asp:BoundColumn>
      <asp:BoundColumn DataField="Address" HeaderText="Address">
          <ItemStyle Wrap="False"></ItemStyle>
      </asp:BoundColumn>
      <asp:BoundColumn DataField="City" HeaderText="City">
          <ItemStyle Wrap="False"></ItemStyle>
      </asp:BoundColumn>
    </Columns>
</asp:datagrid>
                                    
Save all files.
Build the solution.
View the WrapTest.aspx page in the browser. Notice that the text in the columns of the DataGrid does not wrap.




0
 
LVL 10

Expert Comment

by:Kavar
Comment Utility
The wrap functionality occurs for each cell and not for each row of the DataGrid. Therefore, if you set the wrap functionality for all of the DataGrid, text wrapping functionality is not disabled for every row or column
0
 

Author Comment

by:ee_id
Comment Utility

Thanks very much for the work around, nice to know it is a bug!
0
 

Expert Comment

by:lifeoplaid
Comment Utility
For posterity:

If you are dynamincally building your datagrid (number of columns and their names might be different), this is how you'd do the workaround:

    DataGrid1.DataBind();
    foreach(DataGridColumn dgc in DataGrid1.Columns)
    {
        dgc.ItemStyle.Wrap = false;
    }

Note that you would want to add this code after the DataBind().

HTH,
Nathan

0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Purpose To explain how to place a textual stamp on a PDF document.  This is commonly referred to as an annotation, or possibly a watermark, but a watermark is generally different in that it is somewhat translucent.  Watermark’s may be text or graph…
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now