22 messaggi dal 16 ottobre 2014
Ho questo codice nel file "ListCategorieE.aspx.vb":
....
Sub ViewDetails(ByVal Src As Object, ByVal Args As CommandEventArgs)
Dim Codice As String = Args.CommandName
Dim Var As String = Request.QueryString("Var")
Dim Category As String = Request.QueryString("Category")
Dim lingua As String = Request.QueryString("Lingua")
Dim prezzo As String = Request.QueryString("prezzo")
Dim incr As String = Request.QueryString("incr")
Dim OrdineNo As String = Request.QueryString("OrdineNo")
Dim SQLString As String
SQLString = "SELECT articoli.Codice, articoli.Nome" & lingua & " as Description, marche.Marca, Formati.Formato" & lingua & " as Formato, Articoli.ContenutoNetto, Articoli.Video as Video, Articoli.ColloOriginale, Articoli.Photo, Articoli.Dim FROM Articoli, Marche, Formati Where Articoli.IdFormato = Formati.IdFormato and Articoli.IdMarca = Marche.IdMarca and Articoli.Codice='" & Codice & "'"
Catalogo.SelectCommand = SQLString
FormViewDisplay.Visible = "True"
Image.Visible = "True"
If ("Video") = "" Then
GridViewVideo.Visible = "False"
else
GridViewVideo.Visible = "True"
End if
End Sub
.....

e questo nel file "ListCategorieE.aspx"

....,
<asp:GridView id="GridViewVideo" DataSourceID="Catalogo" Runat="Server"
AutoGenerateColumns="False" border="0" HorizontalAlign="Justify">
<columns>
<asp:TemplateField HeaderText="">
<ItemTemplate>
<asp:ImageButton id="Vid" runat="server" ImageURL="images/Video.jpg" ToolTip="Video clip" ImageAlign="Left" onCommand="ViewVideo" CommandName='<%# Container.DataItem("codice") %>'/>
<br><br>
</ItemTemplate>
</asp:TemplateField>
</columns>
</asp:gridview>
......

Praticamente vorrei che la GridViewVideo contenente il Button Video Clip non comparisse quando il campo Video selezionato è vuoto. Ho provato in tutti i modi, ma non ne vengo fuori e mi compare comunque, sia che il campo sia vuoto, sia che ci sia qualcosa.

Potreste aiutarmi gentilmente, per favore?
Grazie mille!!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il problema è nella condizione dell'If, che non potrà mai essere verificata perché stai valutando l'uguaglianza della stringa "Video" (non il contenuto del campo) con una stringa vuota.

If ("Video") = "" Then

Ovviamente "Video" è diverso da "".

Ci sono alcune cose che non mi sono chiare ma, prima che ti faccia domande, vediamo se si riesce a risolvere velocemente in questo modo: sostituisci la tua GridViewVideo (eliminala del tutto) con il seguente Repeater.
<asp:Repeater id="GridViewVideo" DataSourceID="Catalogo" Runat="Server">
<ItemTemplate>
<asp:Placeholder Visible='<%# !string.IsNullOrEmpty(Container.DataItem("Video") as string) %>' runat="server">
<asp:ImageButton id="Vid" runat="server" ImageURL="images/Video.jpg" ToolTip="Video clip" ImageAlign="Left" onCommand="ViewVideo" CommandName='<%# Container.DataItem("codice") %>'/>
<br><br>
</asp:Placeholder>
</ItemTemplate>
</asp:Repeater>

Qui ho mantenuto l'id "GridViewVideo" anche se si tratta di un Repeater per farti fare il minimo numero di modifiche.

Nell'ItemTemplate ho inserito un Placeholder la cui visibilità è regolata dal valore del campo Video. Se è vuoto, verrà reso invisibile.

Il seguente pezzo di codice puoi anche eliminarlo, dato che ormai il problema della visibilità l'abbiamo risolto altrove.
If ("Video") = "" Then
GridViewVideo.Visible = "False"
else 
GridViewVideo.Visible = "True"
End if


ciao,
Moreno
Modificato da BrightSoul il 14 giugno 2016 20.12 -

Enjoy learning and just keep making
22 messaggi dal 16 ottobre 2014
Grazie, gentilissimo, davvero! Però mi dà come messaggio di errore:

BC30157: Leading '.' or '!' can only appear inside a 'With' statement

Ho sostituito (usando VB net):

<asp:Placeholder Visible='<%#!string.IsNullOrEmpty(Container.DataItem("Video") as string) %>'runat="server">

con

<asp:Placeholder Visible='<%#Not String.IsNullOrEmpty(Container.DataItem("Video") as String) %>' runat="server">

ma mi dà questo messaggio di errore:

BC32017: Comma, ')', or a valid expression continuation expected

Deve essere una sciocchezza risolvere, ma non ci arrivo ...

Grazie mille in anticipo e di cuore per un ulteriore aiuto!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego!
ok, l'esempio era in C# ma bisogna riscriverlo in VB.NET dato che stai usando questo linguaggio. Prova così, il problema era che per il casting in VB.NET bisogna usare il CType.
'<%# Not String.IsNullOrEmpty(CType(Container.DataItem("Video"), String)) %>


ciao,
Moreno

Enjoy learning and just keep making
22 messaggi dal 16 ottobre 2014
Grazie ancora di cuore per la solerzia, Moreno, però adesso mi dà come messaggio di errore:

Conversion from type 'DBNull' to type 'String' is not valid

Immagino che sia da aggiungere " .ToString " ma non arrivo a definire dove e con quali parentesi.

Desolata per disturbare ancora, ma sento che la soluzione finale è vicina.

Grazie ancora!
22 messaggi dal 16 ottobre 2014
Ecco. così, mi pare che funzioni:

<asp:Placeholder Visible='<%# Not String.IsNullOrEmpty(CType(Container.DataItem("Video").ToString(), String))%>' runat="server">

E' corretto, vero?

Grazie ancora!
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


E' corretto, vero?

Penso di sì. Quindi con questo sei riuscita a risolvere il problema?

Enjoy learning and just keep making
22 messaggi dal 16 ottobre 2014
Sì sì, grazie, funziona tutto perfettamente!
Per mia curiosità, mi piacerebbe sapere perchè mi hai suggerito di usare un repeater al posto di una gridview, immagino per l'utilizzo poco complesso richiesto in questo caso ...
Grazie ancora per il rpeziosissimo aiuto!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.