BUG: DataGrid Web Server control wraps when the ItemStyle Wrap property or the HeaderStyle Wrap property is set to false in Visual Basic .NET (323169)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework) 1.0
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft Visual Basic .NET (2002)
- Microsoft Visual Basic .NET (2003)
This article was previously published under Q323169
For a Microsoft Visual C# .NET version of this article, see 324165.
This article refers
to the following Microsoft .NET Framework Class Library namespace: SYMPTOMS When you set the HeaderStyle Wrap or the ItemStyle Wrap property to False, data is still wrapped in the columns of the DataGrid Web control.CAUSE 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.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.
STATUSMicrosoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.REFERENCES
For more information about data binding in
ASP.NET, click the following article number to view the article in the Microsoft Knowledge Base:
307860
INFO: ASP.NET data binding overview
For more information about data binding in ASP.NET,
visit the following Microsoft Web site:
Modification Type: | Minor | Last Reviewed: | 8/30/2005 |
---|
Keywords: | kbvs2002sp1sweep kbbug kbDataBinding kbpending kbServerControls KB323169 |
---|
|