Databinding da Check List Box

martedì 21 dicembre 2010 - 13.00
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008

nikkysixx Profilo | Junior Member

Ciao a tutti,e buone feste :D stavo facendo pratica con le checked list box,in particolare per quanto riguarda il binding dei dati e ho un problema,che spero possiate aiutarmi a risolvere

Ipotizzando di avere una tabella nome,cognome,gruppo1,gruppo2,gruppo3 in cui ci sono tutti campi text

Gruppo1,2,3 possono essere compilati o vuoti

I valori possibili di gruppo1,gruppo2,gruppo3 appartengono a un insieme presente in un altra tabella in cui è presente l elenco dei gruppi in totale

All avvio del form oltre ai campi nome,cognome è presente una checkedlistbox con tutti i gruppi NON spuntati

Nella fase del binding dei dati,i campi relativi a nome e cognome (questi due funzionano) e ai rispettivi gruppi si dovrebbero spuntare in automatico (questo è il problema)

Grazie!

freeteo Profilo | Guru

Ciao,
se non ho capito male quello che vuoi fare, un binding di questo tipo non è disponibile in maniera "integrata nel framework".
Puoi cmq tranquillamente farti invece un controllo tuo, che dentro abbia la CheckListBox che esponga una proprietà che usi per bindare la quale tramite codice ti vada a settare i check dove serve.

Qualcosa di questo tipo:
public class MiaCheckList : CheckedListBox { public MiaCheckList() { } public IEnumerable<string> ValoriScelti { get { List<string> lista = new List<string>(); if (this.SelectedItems != null) { foreach (ListViewItem item in this.SelectedItems) lista.Add(item.Text); } return lista; } set { if (value != null) { this.SelectedIndices.Clear(); foreach (var item in value) { int i = this.FindString(item); if (i >= 0) this.SetItemChecked(i,true); } } } } public IEnumerable<string> ValoriAmmessi { get { List<string> lista = new List<string>(); foreach (ListViewItem item in this.Items) lista.Add(item.Text); return lista; } set { if (value != null) { this.Items.Clear(); foreach (string item in value) this.Items.Add(item); } } } }
e da codice gli passi le 2 proprietà ad esempio:
miaCheckList1.ValoriAmmessi = new string[] { "Matteo", "Marco", "Antonio", "Andrea" }; miaCheckList1.ValoriScelti = new string[] { "Marco", "Andrea" };

Chiaramente tu adattalo con i dati che hai tu, ma cmq puoi a questo punto bindare la proprietà "ValoriScelti" con magari una proprietà dell'oggetto che sia la collection dei valori del gruppo, se hai come nel tuo caso 3 colonne, puoi farti cmq una proprietà che ti torni i 3 valori come array:
... public IEnumerable<string> MiaProprieta { get { return new string[] { this.Campo1, this.Campo2, this.Campo3 }; } } ...

e passare quella come binding tra il tuo oggetto "riga" e il controllo, allo stesso modo in cui hai bindato le 2 textbox con il nome ed il cognome...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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