Pregunta

Tengo un DataGridView con destino a un archivo XML. Me gustaría para ordenar por primera columna y tratar los valores como enteros (no cadenas).

XmlDataDocument xml = new XmlDataDocument();
xml.DataSet.ReadXml("file.xml");

dataGridView.DataSource = new BindingSource(xml.DataSet, "Item");
  • Sort (IComparer) no funciona
  • Ordenar (DataGridViewColumn, ListSortDirection) trata a todos los valores como cadenas
  • SortCompare evento no se desencadena

¿Qué tengo que hacer para hacer este trabajo? Heredar DataGridView y anular Ordenar? Ordenar BindingSource? Ordenar conjunto de datos?

Nota para los futuros lectores:

respuesta aceptada no funciona para mi fragmento de código. Tipo de datos debe ser cambiado antes de cargar los datos. Conjunto de datos se debe crear manualmente:

DataTable table = new DataTable("Item");
table.Columns.Add(new DataColumn("id", typeof(int)));
table.Columns.Add(new DataColumn("name", typeof(string)));

DataSet set = new DataSet();
set.Tables.Add(table);
set.ReadXml("file.xml", XmlReadMode.IgnoreSchema);

dataGridView.DataSource = new BindingSource(set, "Item");
¿Fue útil?

Solución

Es necesario cambiar el conjunto de datos de manera que DataType de la columna es System.Int32.

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