domingo, junio 22, 2008

Truco CheckedListBox

Ayer se me planteó un problema de fácil y extraña solución. Necesitaba un CheckedListBox y lo tenía que llenar con los datos leídos de una tabla, así que me puse manos a la obra y voilà, el Intellisense de Visual Studio 2008 no me muestra ningún binding ni ningún DataSource, por lo que me puse a buscar en la red y encontré esto:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=474442&SiteID=1

En resumen, aunque el intellisense no nos muestre algunas propiedades, podemos estar tranquilos, puede que existan si el control tiene como padre otro control como es en este caso el ListBox y que podemos poner sin problemas:

myCheckedListBox.DataSource=myDataSource;
myCheckedListBox.DisplayMember="Name";
myCheckedListBox.ValueMember="Code";

Os aconsejo que reviséis la documentación del control en la MSDN antes de utilizarlo:
http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox_members.aspx

aunque no siempre sea correcto, ya que si buscáis en este link que también es de MSDN podéis ver que dice:
"Nota No es posible enlazar datos a CheckedListBox. Utilice ComboBox o ListBox en su lugar para esto. Para obtener más información, vea Cómo: Enlazar un control ComboBox o ListBox de formularios Windows Forms a datos."

¿Curioso no?

15 comentarios:

Silvia dijo...

Hola Oscar, mi nombr es Silvia y soy de Buenos Aires Argentina. EStoy tratando de resolver un problema que tengo con Crystal Reports 6.0 y SQL 7. Hice un sistema hace un tiempo y funcionaba perfecto pero ahora, de golpe, comence a tener problema solo con los reportes que llaman a store procedures y un poquito complejos.... hoy los llamo y se cuelgan EL REPORTE NO EJECUTA EL SP. Te paso alguna vez? mil gracias saludos silvia

OscarMontesinos dijo...

Sí. Tienes varias opciones:

-Ejecuta el procedimiento almacenado desde el analizador de consultas.
-Comprueba los parámetros que le estás pasando no sea que sean valores enormes.
-Para la conexión a la base de datos utilizas OLEDB y ODBC?. OLEDB te dará mejores resultados.
-Comprueba que la conexión del report sea correcta.

alfagactor dijo...

Oscar, gracias por el comentario, me ha sido de gran ayuda.

Johnny dijo...
Este comentario ha sido eliminado por el autor.
OscarMontesinos dijo...

@Jhonny, supongo que habrás encontrado la solución, si tienes alguna duda, encantado de ayudarte.

JP dijo...

Hola lei tu post y tengo el siguiente problema a ver si me puedes ayudar, resulta: que estoy haciendo una App en un Checkedlistbox vb.net 2008, que me muestra los campos de la tabla con la siguiente SQL "SHOW FIELDS FROM tabla;" los cargo sin problemas, los muestra, pero al momento de buscar que campos tiqueo, me muestra la siguiente salida System.Data.DataRowView (en vez del nombre del campo) que podria ser? ojala me puedas dar una manito, muchas gracias, anticipado!!

OscarMontesinos dijo...

Hola JP, mira si la solución de este foro te sirve: http://social.msdn.microsoft.com/Forums/es/winformses/thread/d37c316c-13c3-49b7-87d9-07d730fe90a1

JP dijo...
Este comentario ha sido eliminado por el autor.
JP dijo...

hola, gracias por tu ayuda, pero lei un post anterior de tu blog y ahi estaba la respuesta... pero ahora me nace otra pregunta.. ojala sepas algo.. resulta que tengo 2 formularios A y B, en A tengo un textbox y en B tengo otro textbox o una variable. y resulta y quiero poner el valor del text de B en A lo hice de la siguiente forma A.textbox.text=b.textbox.text y según yo debería poner el valor del objeto del form b, en el de A, pero no lo hace, lei en varios post e intenté hacerlo con variables publicas, pero son las única soluciones??
de antemano muchas gracias

OscarMontesinos dijo...

Supongo que tendrás que cambiarle la propiedad Modifiers del TextBox para poder leer su valor, si desde A llamas a B por ejemplo:
private void button1_Click(object sender, EventArgs e)
{
B b = new B(this);
b.Show();
}

y en B tienes:


A _a;
public B()
{
InitializeComponent();
}
public B(A a):this()
{
_a = a;
}

private void B_FormClosing(object sender, FormClosingEventArgs e)
{
_a.textBox1.Text = textBox1.Text;
}

te debería funcionar

MrClassic dijo...
Este comentario ha sido eliminado por el autor.
MrClassic dijo...

Hola gracias por tu aporte, tengo el siguiente problema necesito llenar una tabla hecha en mysql con los datos listados en un checkedlistbox vb.net, solo los checkeados. te agradeceria mucho que pudieras ayudarme

Oscar Montesinos Marín dijo...

Con algo como esto:
Dim myEnumerator As IEnumerator
myEnumerator = checkedListBox1.CheckedIndices.GetEnumerator()
Dim y As Integer
While myEnumerator.MoveNext() <> False
y = CInt(myEnumerator.Current)
checkedListBox1.SetItemChecked(y, False)
End While

MrClassic dijo...

Gracias por contestar tan pronto, Te explico mejor, por que no me quedo muy claro como implementar el codigo que posteas. En mi formulario se cargan atravez del selectedlistbox los codigos de las materias(tipo string) que un estudiante puede matricular al igual que el numero de matricula de dicho estudiante ese numero de matricula es importante por que es el que me va permitir saber de que estudiante estoy hablando y en que periodo(año y 1 o 2 semestre del año) se matriculo. entonces el control debe enviar la cantidad de materias (los codigos de las materias) seleccionadas(checkeadas), que quiera matricular y enviarlas con el numero de matricula el cual es un autoincrementable que estoy cargando en el form, es decir que debo recorrer el control y enviarle dichos codigos de materias a traves del query insert hasta la tabla. todo esto estaria ubicado en el btnguardar el query ya esta listo solo debo encontrar la forma de hacer dicho recorrido del control hasta que terminen los indices cargados. ojala me haya hecho entender mil gracias!

Oscar Montesinos Marín dijo...

En tu button pones el código que recorre la colección

checkedListBox1.CheckedIndices

que tiene los índices del listbox de las matrículas que ha seleccionado el alumno.

1 A0001
X2 B0001
X3 A0002
4 B0002

CheckedIndices es una lista que tendrá el nº 2 y el 3 que son las matriculas con checked.

Etiquetas

.net (1) ALGORITMO (4) algoritmos (1) Android (1) angular (2) aplicaciones WEB (1) ARGENTINA (1) ASP (4) asp .NET (1) ASP .NET Identity (1) attach (1) Azure (1) base de datos (1) BINDING (1) BioInformática (2) bootstrap (1) C (2) C# (27) castellano (1) catalán (1) Charla (1) CheckedListBox (1) Clase (1) clausura transitiva (2) CLIENTES (1) Closing (1) Combobox (1) Comisiones (1) CONCURSO (1) condones (1) consultas (1) corrupta (1) CORS OWIN (1) CORS WEB API 2 (1) Criptografía (1) CUENTA NARANJA (1) Custom Control (1) Daniel Seara (1) DATAGRIDVIEW (1) David Salgado (2) dendrograma (6) depurar (1) desarrollo (1) Deserializar (1) DEVCAMP (2) durex (1) e-DNI (1) el Guille (2) Eladio Rincón (1) elGamal (1) encriptación (1) encuesta (1) Entidad (1) ERROR (2) error 3624 (1) España (1) España es nido de víboras. (1) Euclides (1) Euclides extendido (1) evento (1) eventos. (1) factorización (1) factorizar (1) Framework 2.0 (1) Framework 3.5 (5) Framework 4 (2) Francisco González (1) Francisco Ruiz (1) física (1) GO (1) google (1) gossip (1) Grupos de usuarios (1) Guadalajara (1) Guille Comunity Tour (2) Gusenet (9) GUSENET. (1) Huelga informáticos (1) IBEX 35 (1) Idioma (1) IFT (1) IISExpress (1) Indice de Fuerza Tecnica (1) Informix (1) informática (1) ING DIRECT (1) INGDIRECT (1) Ingeniería Informática (2) Inteligencia artificial (5) Intro (1) IOS (1) IPad (1) IPhone (1) IV Aniversario (1) JavaScript (2) JPA (2) keybd_event (1) LA CAIXA (1) La Pineda (1) ladroentidad (1) Lector RSS (2) LINQ (5) LINQ2XML (1) ListBox (1) Live Distributed Objects (1) llenar (1) LOG (1) Madrid .NET (1) MainMenu (1) MAP (1) MAP 2011 (1) MAR DEL PLATA (1) matemáticas (1) Matriculación (1) MDIList (1) MdiWindowsListItem (1) MenuItem (1) MenuStrip (1) Microsoft (18) Microsoft Active Professional (1) Miguel Egea (2) MSDE 2 (1) MSDE 2000 (1) MVVM Light (2) mysql (1) NAMESPACE (1) Needleman (2) NET (1) NS (1) Oferta empleo (1) Office 14 (1) Office 2007 (1) Office 2009 (1) ON ERROR (1) OOB (1) Oscar Montesinos (1) OWIN (1) OWIN Security middleware (1) Paginación (1) PDC (1) Pedro Hurtado (1) PINTARTECA (1) PrinterSettings (1) Process (1) ProcessStartInfo (1) Programador (1) Relacional (1) robo (1) RSS (1) Rubén Garrigós (1) Salvador Ramos (1) Santa Pola (1) scrape (1) scraping (1) ScrollBar (1) Secretaría (1) SendInput (1) SENDKEYS (1) Sergio Vázquez (1) Serializar (1) Silverlight 2.0 (2) Silverlight 4 (1) Silverlight 5 (3) Silverlight. (1) Sindicado (1) Sistema Personal de Trading (3) Sistemas Distribuidos (1) SOLID SUMMIT 2009 (1) SPT (2) SQL Server (3) SQL Server 2000 (2) SQL Server 2005 (2) SQL Server 2008 (3) SQL Server Denali (1) SQL Server Information Services. (1) SQLU (1) SSIS (1) SUMMIT SQL (1) Suspect (1) Syndication (1) TAB (1) Tablas (1) Tarragona (1) Token bearer (1) ToolStripMenuItem (1) ToString() (1) Traductor (1) transacciones (1) treeview (1) truco (1) TRY CATCH (1) UCI (1) Unience (2) Universad (1) Universidad Oberta Catalunya (2) UOC (8) Usuarios. (1) VB (1) VB6 (1) VB9 (1) VIAJAR (1) Vila-seca (1) VISUAL BASIC (3) Visual Basic. (1) visual studio (1) Visual Studio 2005 (1) Visual Studio 2008 (16) Visual Studio 2010 (2) Visual Studio 2013 (1) VS2010 (1) VSTA (1) VSTO (1) WCF (1) WEB API (1) web.config (1) WebClient (1) WF (1) windows (1) Windows 7 (3) Windows 8 (2) Windows Azure (1) Windows pone (1) Windows Server 2008 (1) Windows Vista (1) woff (1) WP7 (1) WPF (1) Wunsch (2) XAML (4) XDocument (1) XElement (1) XML (3) XNA (1) Yield (2)