Как изменить в событии Gridview на событие RowDataBound значение поля Eval()
У меня есть GridView:
<asp:GridView ID="gvDownloads">
<Columns>
<asp:TemplateField HeaderText="Status" >
<ItemTemplate>
<%# Eval("Enabled")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<asp:GridView/>
Enabled
свойство является логическим. Теперь я хотел бы отобразить Enabled/Disabled на основе True/False из Enabled
имущество. Поэтому я использую:
Sub gvDownloads_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles gvDownloads.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.Cells(3).Text = "True" Then
e.Row.Cells(3).Text = "Enabled"
Else
e.Row.Cells(3).Text = "Disabled"
End If
End If
End Sub
Но это не работает с момента запуска события e.Row.Cells(3).Text
пустая строка Как я могу решить эту проблему? Спасибо
2 ответа
Решение
If e.Row.Cells(3).Text <> Boolean.FalseString Then
e.Row.Cells(3).Text = "Enabled"
Else
e.Row.Cells(3).Text = "Disabled"
End If
Та же проблема со мной.
e.Row.Cells[i].Text
был пуст. Я думаю, что данные не связаны в то время, что как-то странно, так как мы находимся в событии RowDataBound.
Тем не менее, я использовал:
DataRowView drv = (DataRowView) e.Row.DataItem;
if (drv["RNID"].ToString() == "")
{
e.Row.Visible = false;
}
где "RNID"
является одним из имен столбцов в моем приложении. Это решило мою проблему.