Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / ASP.NET

Avoid Multiple Space Elimination in ASP.NET GridView Control

2.67/5 (5 votes)
6 Nov 2008CPOL1 min read 34.1K  
This article describes how to avoid multiple space elimination in ASP.NET Gridview Control.

Introduction

We often observe a gridview "bug" that we are saving the string data in the database just like this "Testing    Testing1       Testing2    Testing123", but when it is shown in the gridview, it looks like this "Testing Testing1 Testing2 Testing123".
GridView eats the multiple spaces. This is only because of the browser that parses HTML. It never knows spaces, it only considers   as space.

Workarounds

If you want to avoid the automatic elimination of multiple spaces string type data inside gridview, there are some workarounds that exist for it.

1. BoundField

In case if you are using the BoundField, then define it in this way.

ASP.NET
<asp:BoundField DataField="description" DataFormatString="<pre>{0}</pre>" 
	HtmlEncode="False" />

There are two important properties of this field:

  1. Keep the HtmlEncode=False
  2. Enclose the DataFormatString inside the <pre></pre> tag

2. TemplateField

If you are using the TemplateField, then define your template field in this way.

ASP.NET
    <asp:TemplateField ConvertEmptyStringToNull="False">
        <ItemTemplate>
            <pre ><asp:Label ID="Label1" runat="server" 
		Text='<%# Bind("description") %>'></asp:Label></pre>
        </ItemTemplate>
    </asp:TemplateField>

There is one important property that needs to be set in this case:

  1. Enclose your template control inside the <pre></pre> tag (in the above example, I have enclosed the Label control inside <pre></pre>.

Save the HTML Friendly Spaces

If you don't want to enclose BoundField or the TemplateColumn inside the <pre></pre> tags, then you have to manually change the space with HTML compatible space, i.e. &nbsp; at the time while saving it in the database.

A very simple way is to use the Replace function of string. Just like this:

string str = "Testing    Testing1       Testing2     Testing123";
str.Replace(" ", "&nbsp;"); 

History

  • 6th November, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)