2009-04-30 86 views
38

Tengo un datagridview que ato desde una tabla sql, en ese dv tengo esos atributos: Id, Name y Price. Cuando configuro SortMode de Name Columns en Automatic y hago clic en el encabezado de esta columna, puedo ordenar este dv según la primera letra del nombre, de esta manera puedo ordenar productos basados ​​en sus primeras letras (Acumulator, Boat, CocaCola, Engine, etc.).Ordenar las columnas de dataGridView en C#? (Windows Form)

¿Hay alguna manera de que esto ocurra sin hacer clic en el encabezado de la columna Nombre. Estoy buscando algún código que haga este trabajo cuando se cargue el formulario.

+1

la respuesta fue: this.dataGridView1.Sort (this.dataGridView1.Columns [ "nombre"], ListSortDirection.Ascending); – AXheladini

Respuesta

82

Hay un método en el DataGridView denominado "Ordenar":

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending); 

Esto hará mediante programación especie su DataGridView.

+0

¿qué pasa con el tiempo consumido en la clasificación y quiere ordenarlo en el cargar así que, ¿qué hay al ordenarlo cuando se ejecutan las sentencias de SQL no después del enlace! Creo que consumirá más tiempo – Ahmy

+0

Sí, Ahmy tiene razón, en cuanto a rendimiento es mejor ordenarlo en el lado de la base de datos. Por lo tanto, si usa SQL para interactuar directamente con la base de datos, añada una orden hasta el final de su consulta. Simplemente estaba respondiendo la pregunta. Esta es la forma de ordenar un DGV en el código. – BFree

+0

Ok si el AXheladini necesita eso, está bien, pero entendí por su pregunta que no lo necesita en la interfaz de usuario, así que quería ahorrar tiempo. Me alegra que AXheladini encuentre la solución y esto es lo que deseamos de nuestras respuestas. – Ahmy

0

Usa la propiedad Datatable.Default.Sort y luego únela a la vista de cuadro de datos.

3

Puede controlar los datos devueltos por la base de datos SQL, ordenando los datos devueltos:

orderby [Name] 

Si se ejecuta la consulta SQL desde la aplicación, ordenar los datos devueltos. Por ejemplo, cree una función que llame al procedimiento o ejecute el SQL y asígnele un parámetro que obtenga los criterios de orden por orden. Porque si ordenó los datos devueltos desde la base de datos, consumirá tiempo pero lo ordenará ya que se ejecuta como usted dice que desea ordenarlo no desde la UI que desea que se ordene en el tiempo de ejecución así que ordene al ejecutar el SQL consulta.

+0

Estoy vinculando la cuadrícula de datos de forma automática al no utilizar la consulta. ¿Hay alguna manera de acceder a la consulta de la fuente de datos y corregir esto? – AXheladini

+0

quiero decir que la declaración SQL que consulta la base de datos y devuelve los datos le agrega la sintaxis orderby en el procedimiento u uso o en la declaración SQL en la capa DAL – Ahmy

8
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending); 
+1

Estoy de acuerdo en que si utiliza el índice de número mejor que el índice de cadena, porque si cambia el nombre de la columna en el futuro, también tendrá que cambiar el índice de la cadena. – 123iamking

1

Éste es simplier :)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview; 
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC"; 
this.datagridview.datasource = dataview1; 
Cuestiones relacionadas