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:BoundField DataField="description" DataFormatString="<pre>{0}</pre>"
HtmlEncode="False" />
There are two important properties of this field:
- Keep the
HtmlEncode=False
- 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: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:
- 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. 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(" ", " ");
History
- 6th November, 2008: Initial post