Problem with empty cell value in GridView

  • Thread starter Thread starter Bill Gower
  • Start date Start date
B

Bill Gower

I have an cell which contains a field member which is filled with
String.Empty. When I retrieve the value in the cell with
Cells[0].Text.ToString() and try to compare it to String.Empty, I can't
because it contains "&nbsp". I really don't want to compare the value to
that so how can I retrieve an empty cell so that it is String.Empty.

Bill
 
I have an cell which contains a field member which is filled with
String.Empty. When I retrieve the value in the cell with
Cells[0].Text.ToString() and try to compare it to String.Empty, I can't
because it contains "&nbsp".

Yes - that's how empty GridView cells are rendered in HTML. A GridView is
nothing more than an HTML table by the time ASP.NET has rendered it to the
client browser - the rows are <tr> elements and the individual cells are
<td> elements. Some browsers have problems displaying <td> elements which
are completely empty, specifically with regard to borders etc, so ASP.NET
inserts &nbsp; to prevent this.
I really don't want to compare the value to that

??? Why on earth not?

if (Cells[0].Text.ToString() == "&nbsp;")
{
// do something
}

What could be simpler...?
 
Ok that's fine. I won't make it more difficult then it is. :) But now I do
have a real problem. I am retrieving the 3rd row which happens to have no
value in the cell and it is actually containing the value from the first row
same cell. When the gridview is displayed it is an empty cell but when I
retrieve it by

GridView.Rows[index].Cells[0].Text.ToString().

It has the value of the cell from the first row.

What is happening here?

Bill

Mark Rae said:
I have an cell which contains a field member which is filled with
String.Empty. When I retrieve the value in the cell with
Cells[0].Text.ToString() and try to compare it to String.Empty, I can't
because it contains "&nbsp".

Yes - that's how empty GridView cells are rendered in HTML. A GridView is
nothing more than an HTML table by the time ASP.NET has rendered it to the
client browser - the rows are <tr> elements and the individual cells are
<td> elements. Some browsers have problems displaying <td> elements which
are completely empty, specifically with regard to borders etc, so ASP.NET
inserts &nbsp; to prevent this.
I really don't want to compare the value to that

??? Why on earth not?

if (Cells[0].Text.ToString() == "&nbsp;")
{
// do something
}

What could be simpler...?
 
Ok that's fine. I won't make it more difficult then it is. :) But now I
do have a real problem. I am retrieving the 3rd row which happens to have
no value in the cell and it is actually containing the value from the
first row same cell. When the gridview is displayed it is an empty cell
but when I retrieve it by

GridView.Rows[index].Cells[0].Text.ToString().

It has the value of the cell from the first row.

What is happening here?

Difficult to tell without seeing your code but, if you do a View Source on
the page in question, you will see the HTML table rendered from the GridView
webcontrol - does that shed any light on it...?
 
I checked the source and rows 1 to 3 have an entry in the cell and rows 4
to 5 have &nbsp in the cell. When I step through the code and check the
value at the cell from row 4, it has the value from the cell in row 1.

Bill


Mark Rae said:
Ok that's fine. I won't make it more difficult then it is. :) But now I
do have a real problem. I am retrieving the 3rd row which happens to
have no value in the cell and it is actually containing the value from
the first row same cell. When the gridview is displayed it is an empty
cell but when I retrieve it by

GridView.Rows[index].Cells[0].Text.ToString().

It has the value of the cell from the first row.

What is happening here?

Difficult to tell without seeing your code but, if you do a View Source on
the page in question, you will see the HTML table rendered from the
GridView webcontrol - does that shed any light on it...?
 
I checked the source and rows 1 to 3 have an entry in the cell and rows 4
to 5 have &nbsp in the cell. When I step through the code and check the
value at the cell from row 4, it has the value from the cell in row 1.

Please show the code you're using...
 
Back
Top