我注意到当我从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();
}
}
答案 0 :(得分:6)
仍然是一个小的黑客,但可能比处理
更好。您可以在GridView列NullDisplayText=" "
上设置<asp:BoundField>
,然后使用条件,例如:
if (String.IsNullOrWhiteSpace(e.Row.Cells[1].Text))
{
// do something with e.Row
}
在这种情况下,开始时没有
。
答案 1 :(得分:2)
row.Cells[1].Text.Trim()
不适用于
,请改为代替:
row.Cells[1].Text.Replace(" ", "")
答案 2 :(得分:1)
这也有效。在rowDataBound
事件
if (e.Row.Cells[1].Text.Length == 0 || e.Row.Cells[1].Text.Equals(" ") || 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();
您正在修剪它,因此它应该删除
。
答案 5 :(得分:0)
if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer && e.Row.RowType != DataControlRowType.Pager)
这会删除标题,页脚和寻呼机(如果您使用的话),这些行会为我处理
。
答案 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
}