2012-07-26 13 views
5

eval() Mam GridView:Jak zmienić w Gridview na razie RowDataBound wartość pola

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

Obiekt Enabled jest wartością logiczną. Teraz chciałbym wyświetlić Enabled/Disabled na podstawie True/False z właściwości Enabled. Dlatego używam:

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 

Ale to nie działa, ponieważ gdy zdarzenie jest uruchamiany e.Row.Cells(3).Text jest pusty ciąg. Jak mogę rozwiązać ten problem? Dzięki

+0

Czy jest to pusty ciąg, ponieważ w bazie danych znajduje się 'NULL'? – mellamokb

+0

porównać to z 1? –

+0

Domyślam się, że jest pusty, ponieważ nie został jeszcze związany ... – CiccioMiami

Odpowiedz

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

Ten sam problem ze mną.

e.Row.Cells[i].Text był pusty. Myślę, że dane nie są związane w czasie, który jest jakoś dziwny odkąd jesteśmy w zdarzeniu RowDataBound.

Jednak użyłem:

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

gdzie "RNID" jest jedną z nazw kolumn w mojej aplikacji. To rozwiązało mój problem.

Powiązane problemy