example data c# datagridview datasource icollection ordereddictionary

example - datagridview datasource list c#



Usando una lista como fuente de datos para DataGridView (3)

Establecer la propiedad DataGridView

gridView1.AutoGenerateColumns = true;

Y asegúrese de que la lista de objetos que están vinculando, esas propiedades del objeto deben ser públicas.

He extraído los nombres de configuración y sus valores respectivos de un archivo de configuración en un diccionario ordenado. El diccionario contiene claves y valores que son de la clase ICollection. Quiero enlazar esos datos y mostrarlos en un DataGridView. He intentado copiar las cadenas en matrices y mostrarlas, pero cuando ejecuté el programa, las columnas estaban en blanco y no parecía que estuvieran enlazadas.

También intenté establecer la fuente de DataGridView directamente en una de las colecciones de diccionarios ordenados (claves o valores), pero eso tampoco resultó en nada de lo que quería; Las columnas seguían en blanco. Sin embargo, una tercera columna se hace con el nombre de la columna como "longitud" y muestra las longitudes de las entradas en el ICollection. Pero no hace falta decir que no quiero las longitudes, quiero las entradas en sí mismas.

Aquí está el código que estoy usando para esta pregunta: Al cargar el formulario, cargo el archivo de configuración y un miembro privado llamado m_Settings tiene todos los pares clave-valor. Luego creo una lista y agrego las claves y los valores por separado. Después de configurar la fuente de enlace en "datos", ejecuto el programa y las dos columnas que agregué están en blanco.

private void Form4_Load(object sender, EventArgs e) { loadconfigfile(Properties.Settings.Default.Config); List<Object> data = new List<Object>(); data.Add(m_Settings.Keys); data.Add(m_Settings.Values); bindingSource1.DataSource = data; dataGridView1.DataSource = bindingSource1; dataGridView1.Refresh(); }

¿Alguna idea sobre cómo podría obtener el diccionario ordenado y mostrar las entradas en dos columnas con la etiqueta "Configuración" y "Valores"? Creo que las listas eran DataSources compatibles para DataGridViews, pero ahora estoy empezando a cuestionarme.

Cualquier ayuda o dirección es muy apreciada! Estaré encantado de proporcionar más información si es necesario.

¡Gracias!

EDITAR :

Aquí está el código revisado con la clase myStruct implementada:

List<myStruct> list = new List<myStruct>(); for(int index = 0; index < m_Settings.Count; index++) { myStruct pair = new myStruct(keys[index], values[index].ToString()); list.Add(pair); } public class myStruct { private string Key { get; set; } private string Value { get; set; } public myStruct(string key, string value) { Key = key; Value = value; } }

Sin embargo, cuando configuro el DataDource de enlace en la lista, no aparece nada en el DataGridView, simplemente está vacío. Alguien sabe por qué?


Este Func puede ayudarte. agrega cada objeto de lista a la vista de cuadrícula

private void show_data() { BindingSource Source = new BindingSource(); for (int i = 0; i < CC.Contects.Count; i++) { Source.Add(CC.Contects.ElementAt(i)); }; Data_View.DataSource = Source; }

Escribo esto para la aplicación de base de datos simple


Primero, no entiendo por qué agrega todos los tiempos de conteo de claves y valores, el Índice nunca se usa.

Probé este ejemplo:

var source = new BindingSource(); List<MyStruct> list = new List<MyStruct> { new MyStruct("fff", "b"), new MyStruct("c","d") }; source.DataSource = list; grid.DataSource = source;

y eso funciona bastante bien, obtengo dos columnas con los nombres correctos. El tipo MyStruct expone las propiedades que puede utilizar el mecanismo de enlace.

class MyStruct { public string Name { get; set; } public string Adres { get; set; } public MyStruct(string name, string adress) { Name = name; Adres = adress; } }

Intente crear un tipo que tome una clave y un valor, y agréguelo uno por uno. Espero que esto ayude.