Oggetti server non riconosciuti nel codice

giovedì 21 agosto 2008 - 18.56

ravalon Profilo | Expert

Salve a tutti

ho una pagina dove ho inserito una textbox...devo controllare che sia valorizzata... se lo è la pagina mi rimanda ad un'altra pagina...

Il problema è che nel codice non mi riconosce il nome dell'oggetto textbox....nessun oggetto che inserisco a parte un Datalist e gli oggetti Tabella.... Le tabelle sono diverse e annidate...non so se possa essere questo il problema...anche se in altre pagine col medesimo comportamento non ho questo fastidio

da cosa dipende ? come mai non mi riconosce questi oggetti ?

alx_81 Profilo | Guru

>Salve a tutti
Ciao!
>
>ho una pagina dove ho inserito una textbox...devo controllare
>che sia valorizzata... se lo è la pagina mi rimanda ad un'altra
>pagina...
>Il problema è che nel codice non mi riconosce il nome dell'oggetto
>textbox....nessun oggetto che inserisco a parte un Datalist e
>gli oggetti Tabella.... Le tabelle sono diverse e annidate...non
>so se possa essere questo il problema...anche se in altre pagine
>col medesimo comportamento non ho questo fastidio
>da cosa dipende ? come mai non mi riconosce questi oggetti ?
ma è un <asp:TextBox>? o è un input box? Hai guardato se nel file di design è stato creato l'oggetto? Che versione di Visual Studio hai?
Mi è capitato con VS2003 che a volte l'IDE non mi aggiungeva in automatico nel codebehind i controlli che aggiungevo senza usare il designer..
E siccome non uso mai il designer, dovevo switchare sul designer e salvare.
Non ho mai più avuto il problema nelle versioni successive..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

Uso VWD 2005 e parlavo di una ASP:TextBox ma è lo stesso con qualsiasi controllo io metta...in effetti anche io non uso quasi mai il designer dato che mi mostra un vero e proprio macello.....

...se vado sul designer in effetti non vedo proprio tutto...che devo fare ?

AGGIORNAMENTO!!!

Confermo che se carico qualcosa dal Designer poi lo vedo....ma basta che lo sposto o lo rinomino che già non me lo vede più....è come se il mio VWD fosse un po sclerato.....cosa posso fare per eliminare questo problema ? Devo reinstallare VWD ??

alx_81 Profilo | Guru

>Confermo che se carico qualcosa dal Designer poi lo vedo....ma
>basta che lo sposto o lo rinomino che già non me lo vede più....è
>come se il mio VWD fosse un po sclerato.....cosa posso fare per
>eliminare questo problema ? Devo reinstallare VWD ??
Per me quello è sempre stato un mistero.. controlla che sia aggiornato al max.. di più non saprei che fare..

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

ho provato a reinstallare il tutto ma non è cambiato assolutamente niente...proverò come dici e ti farò sapere

balfaz Profilo | Expert

questo a me è successo una volta sola e l'ho sistemato, rifacendo un progetto nuovo e portando dentro un form alla volta del vecchio progetto, facevo il build della PAGINA e continuavo se non ricordo male ero io che avevo combinato qualche cosa da qualche parte (sono stato un vago su questo vero???), spero l'informazione ti serva
"Ci sono due tipi di pazzi, quelli che dicono pazzie e quelli che le fanno diventare una realtà."

ravalon Profilo | Expert

Ho notato che il problema , per quanto esista in generale su questa pagina e basta, è però limitato a tutto quello che mette all'interno del DATALIST....fuori da cio' tutto sembra funzionare....

Cosa posso fare allora limitatamente a questa pagina ?

Ho provato già con il rebuild della pagina stessa.... datemi un consiglio sennò non posso andare avanti col lavoro e mi trovo perso perchè non mi fa usare cio' che per forza devo usare...

Posso andare a mano ad inserire qualcosa nel codice simulando cosi di avere usato il designer ?

Ma almeno VWD 2008 è meglio in questo senso ?

alx_81 Profilo | Guru

>Ho notato che il problema , per quanto esista in generale su
>questa pagina e basta, è però limitato a tutto quello che mette
>all'interno del DATALIST....fuori da cio' tutto sembra funzionare....
ma quindi i controlli sono dentro un datalist?
allora, essendo un container, devi gestire gli eventi di binding e poi usare una FindControl per ricavare l'istanza del controllo interno al datalist..
Qualsiasi controllo che metti dentro ad un gridview, ad un datalist, ecc, non è direttamente accessibile da codebehind..
Allora tutto ha un senso ora

eccoti le reference:

ItemDataBound Event
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx

FindControl Method
http://msdn.microsoft.com/en-us/library/system.web.ui.control.findcontrol.aspx


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

Allora sono stato un brocco io a non pensarci...perdonatemi

Ho già usato in altre occasioni il FindControl....

Per trovarli dentro al datalist uso questa sintassi e funziona

Dim txtQtDesiderata As textbox= CType(e.Item.FindControl("txtQtDesiderata"), textbox)


il mio problema è ...come faccio a creare l'evento CLICK se l'oggetto è dentro ad un DataList dato che non mi funziona l'intellisense ?

alx_81 Profilo | Guru

>il mio problema è ...come faccio a creare l'evento CLICK se l'oggetto
>è dentro ad un DataList dato che non mi funziona l'intellisense?
Nel pulsante che vai a mettere nel datalist valorizzi l'attributo OnClick="NomeTuoMetodo" e poi nel code behind metti il metodo NomeTuoMetodo con i parametri utili all'evento.

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

Si ok...ma cosi come faccio a distinguere il click su un bottone o su un altro se entrambi sono dentro al datalist ?

alx_81 Profilo | Guru

>Si ok...ma cosi come faccio a distinguere il click su un bottone
>o su un altro se entrambi sono dentro al datalist ?
se hai due bottoni, fai due metodi dove è il problema?

poi ogni riga gestirà sempre l'evento associato al suo pulsante..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

Si ma se non ho capito male mi hai detto di mettere nel Datalist un evento OnClick giusto ?

Se ho capito bene, il datalist è uno solo, quindi qualsiasi cosa clicco mi porta ad un solo evento...

O forse intendevi dire che per ogni oggetto posso specificare un OnClick ?

alx_81 Profilo | Guru

>Si ma se non ho capito male mi hai detto di mettere nel Datalist
>un evento OnClick giusto ?
>O forse intendevi dire che per ogni oggetto posso specificare
>un OnClick ?
Per ogni pulsante messo nel datalisk ad esempio..
non onclick del datalist..
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

Ok...per un pulsante fuori dal datalist sono riuscito....

ma per uno dentro al datalist, che poi è cio' che mi serve, non riesco a usare per bene il findcontrol...

Ho creato una sub che viene richiamata al click del pulsante...

Dentro ho tentato di fare cosi

*****************************************
Dim txtQt As TextBox = CType(DataListProdottiCategoria.FindControl("txtQtDesiderata"), TextBox)

MsgBox(txtQt.Text)
*****************************************

Ma non me lo trova....

Riesco a farlo trovare correttamente invece nell'evento DataList_ItemDataBound ma cosa ci faccio da li dato che mi serve controllare il valore della textbox alla pressione del bottone ?

Cosa sbaglio ?

Risolto questo credo che non vi scoccerò più....e vi ringrazio moltissimo per la pazienza che avete...
P.S. certo che è una cavolata che se un oggetto è dentro un controllo non possa fare una cosa del tipo

contenitore.oggetto.proprietà...... non trovate ?

alx_81 Profilo | Guru

>Riesco a farlo trovare correttamente invece nell'evento DataList_ItemDataBound
>ma cosa ci faccio da li dato che mi serve controllare il valore della textbox alla pressione del bottone ?
gestisci l'evento itemcommand

DataList.ItemCommand Event
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemcommand.aspx

e discrimini in base al CommandName (Attributo del controllo che vai a mettere nel datalist).
>


>P.S. certo che è una cavolata che se un oggetto è dentro un controllo
>non possa fare una cosa del tipo
>contenitore.oggetto.proprietà...... non trovate ?
Nativamente il controllo ha le sue proprietà.. Non puoi pretendere che aggiungendo un bottone tu possa trattarlo come nuova proprietà
In quel caso puoi farti un WebControl che al suo interno ha un datalist fatto come vuoi tu e poi aggiungere la proprietà personalizzata, in modo poi da gestire la cosa come:
TuoControllo.TuaProprietà = Valore


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

ravalon Profilo | Expert

ho fatto cosi e funziona

Protected Sub DataListProdottiCategoria_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles DataListProdottiCategoria.ItemCommand

Dim txtqt As TextBox = e.Item.FindControl("txtQtDesiderata")

MsgBox(txtqt.Text)

end sub

Però non ho gestito niente con la proprietà commandname, anche perchè alcuni controlli non la hanno e sto usando proprio quelli...
,,,,ma l'importante è che ho un metodo che funziona....grazie !!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5