Пустая ячейка Gridview заполняет текстовое поле "" - PullRequest
0 голосов
/ 06 ноября 2010

Я заметил, что когда я заполняю текстовые поля из выбранной строки в виде сетки, то, если поле пустое, в текстовом поле отображается "".

Вот решение, которое я нашел.Я проверяю каждую ячейку перед тем, как добавить ее в текстовое поле.

У меня возникает ощущение, что я либо делаю что-то не так, чтобы сначала решить эту проблему, либо есть лучший способ справиться с этим.

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 ]

6 голосов
/ 25 ноября 2013

Все еще незначительный взлом, но, вероятно, лучше, чем иметь дело с &nbsp;.Вы можете установить NullDisplayText=" " в столбце GridView <asp:BoundField>, а затем использовать условие, например, например:

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

В этом случае &nbsp; для начала не существует.

2 голосов
/ 08 ноября 2011
row.Cells[1].Text.Trim()

не работает для &nbsp;, замените его вместо:

row.Cells[1].Text.Replace("&nbsp;", "")
1 голос
/ 05 июня 2013

использование

txtEditCust_ID.Text = Server.HtmlDecode(row.Cells[1].Text.Trim());
1 голос
/ 02 марта 2012

Это тоже работает. Добавьте этот фрагмент кода под ваше 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;
                }
0 голосов
/ 02 сентября 2016

Если вы хотите проверить значение ячейки сетки, пустое или нулевое, используйте это:

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 голосов
/ 03 марта 2014
if (e.Row.RowType != DataControlRowType.Header && e.Row.RowType != DataControlRowType.Footer && e.Row.RowType != DataControlRowType.Pager) 

Это удаляет строки заголовка, нижнего колонтитула и пейджера (если вы используете), которые позаботились о &nbsp; для меня.

0 голосов
/ 08 ноября 2010

Удалите оператор if, просто используйте:

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

Вы обрезаете его, чтобы он все равно удалил &nbsp;.

...