2010-09-17 2 views
6

У меня есть этот код, заполняющий текстовое поле, основанное на ячейке в выбранной строке в GridViewПредотвратить Пустые GridView данных заселения « » в текстовое поле

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     txtComment.Text = row.Cells[14].Text.Trim(); 

    } 

Он отображает   в текстовом поле txtComment если сот [ 14] не имеет данных.

Есть ли способ предотвратить появление  , когда в ячейке выбранной строки нет данных?


Редактировать Я попробовал это, и это не сработало

if (row.Cells[14].Text.Trim().Length > 1) 
{ 
    txtComment.Text = row.Cells[14].Text.Trim(); 
} 
else 
{ 
    txtComment.Text = row.Cells[14].Text = ""; 
} 

========================= ==========================================

Это работало

if (row.Cells[14].Text.Trim()!=" ") 
{ 
    txtComment.Text = row.Cells[14].Text.Trim(); 
} 
else 
{ 
    txtComment.Text = row.Cells[14].Text = ""; 
} 
+0

вы пробовали 'row.Cells [14] .Text = string.Empty;' или '=" ";'? –

+0

Я попробовал оба = string.Empty; и = ""; и я до сих пор получил & nbsp –

ответ

4

Проблема в том, что вы получаете доступ к свойству Text ячейки HTML, а не к e столбца данных. Сетка должна отображать   в пустой ячейке таблицы, чтобы ячейка таблицы все еще была видна при визуализации в некоторых браузерах. Это связано с HTML и не имеет ничего общего с вашими данными или кодом;

То, что вы должны делать что-то вроде этого:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DataRow myRow = (DataRow)GridView1.SelectedRow.DataItem; 
    txtComment.Text = myRow[14]; 
} 

Формат для доступа к свойству элемента данных будет немного отличаться в зависимости от того, что DataItem на самом деле, вы можете привести его к тип объекта, который соответствует вашему источнику данных, и затем соответствующим образом получить доступ к его свойствам.

EDIT: я изменил код примера, чтобы продемонстрировать, что свойство DataItem отличает объект DataRow. Вам нужно отдать его любому типу, который вы кормите в качестве источника данных. Надеюсь, это будет более ясным.

+0

Я получаю это сообщение об ошибке, когда я пытаюсь его "Невозможно применить индексирование с [] к выражению типа 'object'" –

+0

@JoshuaSlocum: см. мои правки выше, вам нужно передать DataItem в любой тип объекта используется в качестве источника данных. – CodingGorilla

10

У меня также была проблема, как этот, и я нашел, что это полезно также:

txtComment.Text = row.Cells[14].Text.Replace(" ", ""); 

я надеюсь, что это может помочь вам :)

+0

плохое решение ... там много других лучше работать вокруг ... – elle0087

2

Там нет необходимости писать код, просто добавить HtmlEncode = "false" для Boundfield.

7

Использование NullDisplayText =»"

 <asp:BoundField DataField="EmployeeName" HeaderText="Name" NullDisplayText=" "/> 
+0

чистый и работает для меня. – ZeeProgrammer

2

Используйте это:

Server.HtmlDecode() 

Например:

txtComment.Text = Server.HtmlDecode(row.Cells[14].Text); 

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