Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Problema checkboxlist
venerdì 09 dicembre 2005 - 14.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ilpako
Profilo
| Junior Member
184
messaggi | Data Invio:
ven 9 dic 2005 - 14:26
ragazzi ho creato una checkboxlist in questo modo:
chklxequip.DataSource = SelectOleDbSrvRows(dbConn, strConn, sqlCmd)
chklxequip.DataValueField = "ID"
chklxequip.DataTextField = "newequip"
prima domanda:
come faccio a decidere quali elementi debbano apparire chekkati e quali no?
seconda dmanda:
ora ho bisogno di intercettare sull'evento selectindexchanged se la proprietà checked dell'elemento è true o false...ma ho visto che il listitem della checkboxlist non ha la proprietà checked...
che faccio?
GvnnRules
Profilo
| Senior Member
436
messaggi | Data Invio:
ven 9 dic 2005 - 15:14
prima domanda:
Per checcare quelli che ti interessano ti devi scorrere la collection dei listitem e selezionare quelli che soddisfano le tue condizioni. Altrimenti l'alternativa è quella di costruire la lista elemento per elemento.
seconda dmanda:
La proprietà è selected
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolslistitemclassselectedtopic.asp
Peace
Gvnn
ilpako
Profilo
| Junior Member
184
messaggi | Data Invio:
ven 9 dic 2005 - 15:25
il problema è ke nn esiste una proprietà checked...se io tolgo il segno di spunta da un elemento ho bisogno di eliminarlo da un certo array riempito con gli oggetti chekkati... ho reso l'idea? sul selected=false non posso risalire al valore di quell'oggetto poikè la proprietà selecteditem dà valore nullo.
schifidus
Profilo
| Junior Member
92
messaggi | Data Invio:
lun 12 dic 2005 - 21:01
Ciao dovresti essere più chiaro su cosa vuoi fare...
Nel senso l'arraylist degli elementi checcati quando lo crei? se elimino un elemento perchè lo deseleziono , nel caso dovessi selezionarlo nuovamente lo devo aggiungere ancora nell'arrayList?
Comunque in linea di massima il metodo migliore dovrebbe essere intercettare dall'evento checkedListBox1_SelectedIndexChanged il selectedItem che scaturisce il fire dell'evento (e questo lo fai semplicemente castando sender -->CheckedListBox sen = (CheckedListBox)sender; e accedendo alla proprietà selectedItem chiamando poi il metodo toString()).
A questo punto invece che un arrayList ti crei un HashTAble con items che hanno come chiave il nome dell'elemento della CheckedListBox e semplicemente chiamerai il metodo remove dell'hash passandogli sen.SelectedItem.toString();
Altrimenti puoi sfruttare la reflection.
Ancora meglio non dimenticare che la classe CheckedListBox contiene una collection aggiornata dinamicamente econtentente tutti gli elementi selezionati, quindi fa già quello che vorresti fare tu... (la collection deriva dalla proprietà SelectedItems. Fai attenzione al plurale di Item....)
Se sei più chiaro nel descrivere quello che devi fare vediamo come risoverla...
Ciao Marco.
ilpako
Profilo
| Junior Member
184
messaggi | Data Invio:
mar 13 dic 2005 - 00:47
attenzione io ho parlato di una checkboxlist non di una checkedlistbox. questa di cui parli nn va bene per le web apps...cmq hai capito di cosa ho bisogno...aggiornare dinamicmente una lista degli elementi selezionati...ma credo di aver risolto utilizzando delle list box dinamike...cmq il problema resta sulle checkboxlist poikè nn si può risalire al valore (o a qualsiasi altra prorpietà) di un elemento non cekkato...fateci caso...se io ho una checkbox singola posso dire se "checked" = false o true ==> posso ricavare qualsiasi propietà...in una checkboxlist devo usare l'attributo "selected" ma se quest'ultimo è uguale False nn posso ricavare nesuna proprietà dell'item deselezionato...SMENTITEMI!!!poikè l'item risulta = NULL
schifidus
Profilo
| Junior Member
92
messaggi | Data Invio:
mar 13 dic 2005 - 09:05
Scusa ma ieri sera ero un pò stanco e non ho visto che ti riferivi ad una WebApp.
Ti devo smentire...
Con un semplice ciclo come il seguente puoi scorrere tutti gli elementi di una checkBoxList e verificare o meno che siano chekkati, inoltre puoi accedere a tutte le proprietà di ogni singolo elemento della checkBoxList.
Se inoltre setti il postBack del controllo a true, ogni volta che modifichi lo stato della variabile selected di un Item hai la possibilità di eseguire questo controllo e popolare nuovamente il tuo arrayList.
private void CheckBoxList1_SelectedIndexChanged(object sender, System.EventArgs e)
{pippo.clear() //dove pippo è un ArrayList che probabilmente avrai necessità di mettere in Session.
for(int i=0;i<this.CheckBoxList1.Items.Count;i++)
{
if(this.CheckBoxList1.Items[i].Selected==true)
{
pippo.add(this.CheckBoxList1.Items[i].toString())
}
}
}
Se usassi un HashTable avresti il vantaggio di non dover sempre pulire tutto l'arrayList e ricrearlo, ma semplicemente verificare se la chiave esiste già o meno ed eliminarla o aggiungerla in relazione alla proprietà selected dell'Item.
Era questo che avevi bisogno.
Ciao Marco.
ilpako
Profilo
| Junior Member
184
messaggi | Data Invio:
mar 13 dic 2005 - 12:36
tnx schifidus forse l'hashtable sarà più utile...
Torna su
Stanze Forum
Elenco Threads
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 !