Как изменить в событии 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" является одним из имен столбцов в моем приложении. Это решило мою проблему.

Другие вопросы по тегам