空白Gridview单元格将“”填充到文本框中

时间:2010-11-06 02:52:36

标签: asp.net gridview selectedindexchanged

我注意到当我从gridview中的选定行填充文本框时,如果该字段为空,则在文本框中显示“& nbsp”。

这是我提出的解决方案。在将每个单元格添加到文本框之前,我会检查每个单元格。

我觉得我首先要做出错误,或者有更好的方法来解决这个问题。

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
    if (row.Cells[1].Text.Trim() != " ")
    {
        txtEditCust_ID.Text = row.Cells[1].Text.Trim();
    }




}

7 个答案:

答案 0 :(得分:6)

仍然是一个小的黑客,但可能比处理&nbsp;更好。您可以在GridView列NullDisplayText=" "上设置<asp:BoundField>,然后使用条件,例如:

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

在这种情况下,开始时没有&nbsp;

答案 1 :(得分:2)

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

不适用于&nbsp;,请改为代替:

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

答案 2 :(得分:1)

这也有效。在rowDataBound事件

下添加此代码
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;
                }

答案 3 :(得分:1)

使用

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

答案 4 :(得分:0)

删除if语句,只需使用:

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

您正在修剪它,因此它应该删除&nbsp;

答案 5 :(得分:0)

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

这会删除标题,页脚和寻呼机(如果您使用的话),这些行会为我处理&nbsp;

答案 6 :(得分:0)

如果要检查gridview单元格值是空还是null,请使用:

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