2012-07-26 52 views
5

的价值我有一个GridView:如何在GridView改变RowDataBound事件一个eval()字段

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

+0

它是一个空字符串,因为它在数据库中是NULL的吗? – mellamokb 2012-07-26 14:55:25

+0

将其与1比较? – 2012-07-26 14:57:52

+0

我想这是空的,因为它还没有被绑定... – CiccioMiami 2012-07-26 15:48:35

回答

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 
2

与我同样的问题。

e.Row.Cells[i].Text是空的。我认为这些数据在我们处于RowDataBound事件中的时候并不是很奇怪。

但是,我用:

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

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

相关问题