5

我有一个 GridView:

<asp:GridView ID="gvDownloads">
   <Columns>
      <asp:TemplateField HeaderText="Status" >
         <ItemTemplate>
             <%# Eval("Enabled")%>
         </ItemTemplate>
      </asp:TemplateField>
   </Columns>
<asp:GridView/>

Enabled属性是一个布尔值。现在我想根据Enabled属性的 True/False 显示 Enabled/Disabled。因此我使用:

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是一个空字符串。我怎么解决这个问题?谢谢

4

2 回答 2

4
If e.Row.Cells(3).Text <> Boolean.FalseString Then
       e.Row.Cells(3).Text = "Enabled"
Else
       e.Row.Cells(3).Text = "Disabled"
End If
于 2012-07-26T15:12:52.337 回答
2

我也有同样的问题。

e.Row.Cells[i].Text是空的。我认为数据当时没有绑定,这有点奇怪,因为我们处于 RowDataBound 事件中。

但是,我使用了:

     DataRowView drv = (DataRowView) e.Row.DataItem;
     if (drv["RNID"].ToString() == "")
     {
        e.Row.Visible = false;
     }

"RNID"我的应用程序中的列名之一在哪里。这解决了我的问题。

于 2012-08-09T08:37:36.517 回答