Fltro su Gridview

giovedì 05 novembre 2009 - 17.22

ma_di Profilo | Junior Member

Ciao a tutti,
ho visto che esiste del materiale e risposte a vari quesiti, ma proprio non mi riesce di far funzionare il progetto "stupido" che ho realizzato (Visualbasic su VisualStudio 2008); ciò che vi chiedo gentilmente è di farmi capire dove sto sbagliando, visto che ho provato tutto di tutto; sappiate che sono agli inizi con ASP e Framework, quindi non ho molta dimestichezza con essi, ma vorrei tanto acquisirne

GridView con 6 colonne, popolato da un SQLdata source ( e fin qui tutto bene)
Una colonna della Gridview, attraverso l'Edit Template, ha una DropdownList, popolata da un SQLDataSource; Autopostback attivato (tutto bene).

Per far sì che la Gridview mi visualizzi solo i record filtrati con il campo selezionato nella Dropdownlist, faccio doppio click sulla Dropdownlist; automaticamente VisualStudio mi crea Protected Sub DropDownList1_SelectedIndexChanged; qui dentro intendo andarmi a prendere il testo selezionato nella DropDownlist, modificare la query della SQLDataSource della Gridview e fare il Binding della medesima.....; non c'è verso; proprio non riesco a raggiungere sto benedetto valore.
Ho provato anche ad impostare i filtri sull'SQL Datasource della Gridview (che sicuramente è più elegante), ma non mi trova il ControlID della Dropdown list ....
Onestamente, ho fatto talmente tante prove che non ricordo nemmeno più cosa ho fatto..

Se gentilmente qualcuno potesse darmi una dritta.... ringrazio fin d'ora.

Antonio.

martinez Profilo | Senior Member

Ciao ... devi agire sempre e comunque all'interno della griglia e non sulla drop ...

e quindi devi rintracciare la drop da codice ... perchè questa non è direttamente accessibile trovandosi dentro ad un contenitore (griglia)

ti indico un modo per rintracciare la drop all'interno della griglia adegualo alle tue esigenze ... a proposito ho scitto il codice al volo senza verificare ...

if (GridView1.EditIndex >= 0) { GridViewRow row = GridView1.Rows[GridView1.EditIndex]; DropDownList drop= (DropDownList)row.FindControl("DropDownList1"); tuoValore = drop.SelectedItem.ToString(); }

Antonio

ma_di Profilo | Junior Member

Grazie per la risposta; proverò appena possibile e ti farò sapere.

Ciao.

ma_di Profilo | Junior Member

Ciao Martinez,
ti ringrazioi ancora per la tua risposta, ma proprio non so che fare; con sto benedetto website non ci vado proprio d'accordo; in questo caso forse è meglio prima studiare e poi fare...non studiare mentre fai...
Il codice che mi hai mandato va messo nella DropDownList1_SelectedIndexChanged che si crea automaticamente facendo doppio click sulla Dropdown ? Perchè se è così non c'è proprio verso di farla digerire al compilatore ( in vb6 era tutto molto più semplice...)

Ciao.
Antonio

martinez Profilo | Senior Member

Cao!

anzitutto non scoraggiarti ci siam passati tutti chi più o chi meno ... ma tutti

poi devo chiederti scusa perchè il mio suggerimento è scritto in C# e sbadatamente non avevo letto che tu lavori in VB del quale io conosco poco ...

per farti meglio capire cosa volevo indicarti ti invito a cominciare dal link seguente per ragionare sull'intercettazione di un controllo all'interno di un contenitore (controllo) ...

http://msdn.microsoft.com/it-it/library/486wc64h.aspx

fammi sapere se hai indentificato il tuo problema ... saluti

Antonio

ma_di Profilo | Junior Member

Allora:
la Gridview1 è questa:


1152x720 6Kb


La colonna Reparto è definita nel template editing


1152x720 2.488Kb


Con un doppi click sulla DropDownList1 automaticamente si crea il codive che intercetta il controllo.
Ho inserito il codice di esempio; ciò che devo andare a scovare è l'ID del controllo DropDown ( immagino..); pertanto, se inserisco nel codice

Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)

Dim myControl1 As Control = FindControl("DropDownList1")
If (Not myControl1 Is Nothing) Then
' Get control's parent.
Dim myControl2 As Control = myControl1.Parent
Response.Write("Parent of the text box is : " & myControl2.ID)
Else
Response.Write("Control not found.....")
End If


End Sub
End Class

... ovvero la DropDownList1, il controllo non viene trovato.
Se invece metto Gridview1, il controllo viene trovato.
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5