开发者

Blank Gridview Cell populates "&nbsp" into textbox

开发者 https://www.devze.com 2023-01-23 14:03 出处:网络
I\'ve noticed that when i populate textboxes from a selected row in a gridview that if the field is blank it displays \"&nbsp\" in the textbox.

I've noticed that when i populate textboxes from a selected row in a gridview that if the field is blank it displays "&nbsp" in the textbox.

Here is the solution I came up with. I check each cell before adding it to the textbox.

I get the feeling that I'm either doing something wrong to have this problem in the first place or that there is a better way to handle this.

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{

    //// Get the currently selected row using the SelectedRow property.
    GridViewRow row = GridView1.SelectedRow;

    // Load data from selected row into textboxes
    i开发者_运维百科f (row.Cells[1].Text.Trim() != " ")
    {
        txtEditCust_ID.Text = row.Cells[1].Text.Trim();
    }




}


Still a minor hack, but probably better than dealing with &nbsp;. You can set NullDisplayText=" " on GridView column <asp:BoundField> and then use condition like for example:

if (String.IsNullOrWhiteSpace(e.Row.Cells[1].Text))
{
    // do something with e.Row
}

In this case, there is no &nbsp; to begin with.


row.Cells[1].Text.Trim()

is not working for &nbsp;, replace it instead:

row.Cells[1].Text.Replace("&nbsp;", "")


This works too. Add this piece of code under your rowDataBound event

if (e.Row.Cells[1].Text.Length == 0 || e.Row.Cells[1].Text.Equals("&nbsp;") || e.Row.Cells[1].Text.Equals("") || e.Row.Cells[1].Text.Equals(string.Empty))
                {
                    e.Row.Cells[1].Text = string.Empty;
                }


use

txtEditCust_ID.Text = Server.HtmlDecode(row.Cells[1].Text.Trim());


Remove the if statement, just use:

txtEditCust_ID.Text = row.Cells[1].Text.Trim(); 

You are trimming it so it should remove the &nbsp; anyway.


if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer && e.Row.RowType != DataControlRowType.Pager) 

This removes the header, footer, and pager (if you are using) rows which took care of the &nbsp; for me.


If you want to check the gridview cell value whether empty or null, use this:

string decodeCellValue = Context.Server.HtmlDecode(e.Row.Cells[i].Text).Trim();
if(string.IsNullOrEmpty(decodeCellValue))
{
  // Cell value empty or NULL
}
else
{
  // Have some value
}
0

精彩评论

暂无评论...
验证码 换一张
取 消