Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    110

    [ASP.NET VB] Come recuperare dinamicamente un controllo html

    Salve a tutti,
    ho una tabella con delle row configurate per essere viste lato server e
    mi piacerebbe fare qualcosa del genere per modificare con una riga le proprietà, tipo così:

    Codice PHP:
            Dim curRow As HtmlTableRow CType(Me.FindControl("row" ind), HtmlTableRow )
            
    curRow.Visible True 
    La riga in questione non viene trovata pur esistendo, controllando col debug l'oggetto Me contiene tutte le rows. Vorrei evitare di avere codice ridondante del tipo:

    Codice PHP:
    Select case ind
    Case "0"
            
    Me.row0.Visible True
    Case "1"
            
    Me.row1.Visible True
    ecc
    .. 
    Quel sistema per i controlli standard funziona
    Qualche genietto del forum sa come risolvere?

    Grazie in anticipo
    Ciao
    Marco

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: non capisco perchè non funzioni. Ho provato questo e va:

    codice:
            <table border="1">
                <tr id="tr_0" runat="server">
                    <td>0</td>
                    <td>a</td>
                </tr>
                <tr id="tr_1" runat="server">
                    <td>1</td>
                    <td>b</td>
                </tr>
                <tr id="tr_2" runat="server">
                    <td>2</td>
                    <td>c</td>
                </tr>
                
            </table>
    codice:
            Dim r As HtmlTableRow = TryCast(Me.FindControl("tr_" & 1), HtmlTableRow)
            If r IsNot Nothing Then
                r.Visible = False
            End If
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    110
    Non capisco, a me non funziona ma mi sono accorto che neanche i controlli standard vengono trovati, mi ha tratto in inganno il fatto che funzionavano se li cercavo nella master page!
    Me.FindControl mi da tutto Nothing, cosa sbaglio?

    Questo è il log del controllo immediato fatto sulla pagina corrente:
    ?CType(Me.FindControl("lblProdotto"),Label).Text
    L'oggetto a cui si fa riferimento ha valore 'Nothing'.

    questo sulla master page:
    ?CType(Me.Master.FindControl("lblDate"),Label).Tex t
    "Date: giovedì 9 ottobre 2008
    Time: 14.51.35"

    Uso VS 2008 sotto Vista
    Ciao
    Marco

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    master page? :master: boh! adesso sono curioso e ci provo
    Pietro

  5. #5
    io uso javascript... anke io ho avuto il tuo stesso problema... x la ricerca dei controlli usavo javascript al max se proprio vuoi usare .net puoi ricercare i campi con una request... ma dubito in questo caso funzioni...

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, la tabella è dentro un Content in una struttura Master Page.

    codice:
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim r As HtmlTableRow = TryCast(FindControlRecursive(Me, "tr_" & 1), HtmlTableRow)
            If r IsNot Nothing Then
                r.Visible = False
                l.PrintLn("trovato")
            Else
                l.PrintLn("non trovato")
            End If
    
        End Sub
    dove FindControlRecursive è:
    codice:
        Public Function FindControlRecursive(ByVal ctrl As Control, ByVal id As String) As Control
            If ctrl.ID = id Then Return ctrl
    
            Dim childCtrl As Control
            For Each childCtrl In ctrl.Controls
                Dim resCtrl As Control = FindControlRecursive(childCtrl, id)
                If Not resCtrl Is Nothing Then Return resCtrl
            Next
            Return Nothing
        End Function
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    110
    Ti ringrazio Pietro, ora mi è chiaro. Ero convinto che il findcontrol cercava anche nei controls figli, ed invece no, per questo non trovavo nulla!
    Ciao
    Marco

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da marcomd
    Ti ringrazio Pietro, ora mi è chiaro. Ero convinto che il findcontrol cercava anche nei controls figli, ed invece no, per questo non trovavo nulla!
    :master: in effetti ne ero convito anche io

    Pietro

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova questo

    Dim r As HtmlTableRow = TryCast(Me.Master.FindControl("ContentPlaceHolder1 ").FindControl("tr_1"), HtmlTableRow)

    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.