Pregunta

Muy bien, estoy tratando de leer un archivo delimitado por comas y luego ponerlo en un ListView (o en cualquier cuadrícula, en realidad). Tengo la parte delimitadora del trabajo a cargo, con los campos del archivo en una matriz de cadenas multidimensionales. El problema es tratar de ingresarlo en ListView.

Parece que no hay una forma real de agregar columnas o elementos dinámicamente, ya que cada columna y elemento debe declararse manualmente. Esto plantea un problema, porque necesito que ListView sea tan grande como el archivo, cuyo tamaño no está configurado. Podría ser enorme una vez, y otra pequeña.

Cualquier ayuda con esto sería apreciada.


En respuesta a la respuesta de Jeffrey.

Haría exactamente eso, pero el problema con el que me estoy topando es uno básico. ¿Cómo puedo crear estos objetos sin nombrarlos? Noobie pregunta, pero un problema para mí, por desgracia. Esto es lo que tengo hasta ahora.

int x = 0;
int y = 0;
while (y < linenum)
{
    while (x < width)
    {
        ListViewItem listViewItem1 = new ListViewItem(list[y,x]);
        x++;
    }
    y++;
    x = 0;
}

¿Qué debo hacer para el nombre de listViewItem1?

¿Fue útil?

Solución

Simplemente recorre cada una de las matrices que creaste y crea un nuevo objeto ListViewItem (creo que hay un constructor que toma una matriz de cadenas). Pasan ListViewItem al método ListView.Items.Add ().

Otros consejos

Puede cargar un archivo csv con ado.net y enlazarlo a una fuente de datos datagrids. O puede usar linq para xml para analizar el archivo y vincular esos resultados a la propiedad de origen de datos de un datagrid.

Usaría la Biblioteca de FileHelpers para leer en el archivo CSV y luego DataBind la colección a la vista de lista .

Use DelimitedClassBuilder para crear dinámicamente columnas con el tipo de (cadena) igual al número de columnas en su archivo fuente.

Cargue su archivo CSV en una DataTable utilizando la RecordClass que creó y luego configure ListView.DataSource en DataTable.

¿Hay alguna razón por la que no puede usar una DataTable? Use el miembro DataSource fuera de él.

Además, espero que esté utilizando la función String.Split y no esté analizando manualmente ...

~ S

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top