necesito ordenar un datatable

07/07/2005 - 23:21 por Walter | Informe spam
por favor si alguien me puede dar una mano!!

fijense el siguiente codigo, cuando construyo el combo, resulta que no
respeta el orden que le indico en el dataview, porque puede ser???

gracias!!

walter
Label5.Visible = True

cboChangeLoc.Visible = True

btnAsignar.Visible = True

cboChangeLoc.Items.Clear()

ds_loc2.Clear()

Dim leves As New Levenstein.Lev

Dim id_prov As String

id_prov =
leves.Lev_Provincia(grilla_descartados.Item(grilla_descartados.RowSel, 9))

Dim sql As String = "select distinct a.nombre from localidades_sinonimos a
join localidad x on a.localidad_id = x.localidad_id join partidos b on
x.partido_id = b.partido_id join provincia c on b.provincia_id =
c.provincia_id where c.provincia_id = " & id_prov

Dim da As New SqlDataAdapter(sql, cn_sql)

Try

da.Fill(ds_loc2, "localidades")

For Each dr As DataRow In ds_loc2.Tables("localidades").Rows

Dim drNew As DataRow

drNew = ds_loc2.Tables("tabla_correctos").NewRow

drNew.Item("levs") =
leves.LD(grilla_descartados.Item(grilla_descartados.RowSel, 4),
dr("nombre")).ToString

drNew.Item("Nombre") = dr("nombre")

ds_loc2.Tables("tabla_correctos").Rows.Add(drNew)

Next


Dim dv As DataView = New DataView(ds_loc2.Tables("tabla_correctos"), "",
"levs ASC", DataViewRowState.CurrentRows)



Dim i As Integer = 1

For Each fila As DataRow In ds_loc2.Tables("tabla_correctos").Rows

cboChangeLoc.Items.Add(fila("levs"))

If i >= 10 Then

Exit For

End If

i += 1

Next

Catch ex As Exception

MsgBox(ex.Message)

End Try

Preguntas similare

Leer las respuestas

#1 Tristan
07/07/2005 - 23:52 | Informe spam
El problema es que estás definiendo un DataView, por cierto de una forma
bastante más complicada de lo necesario, pero lo que recorres es el
DataTable y no el DataView, con lo cual el órden que has establecido no
sirve para nada.

Debes sustituir en la parte final de tu código:

Dim dv As DataView = New DataView(ds_loc2.Tables("tabla_correctos"), "",
"levs ASC", DataViewRowState.CurrentRows)
For Each fila As DataRow In ds_loc2.Tables("tabla_correctos").Rows

Por:

dim vista as new DataView(ds_loc2.Tables("tabla_correctos"))
vista.Sort = "levs"
For Each fila As DataRow In vista

Habría otras optimizaciones en tu código que podrían ser convenientes.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Walter
08/07/2005 - 15:44 | Informe spam
Gracias Tristan, te comento que lo que me pasaste funciono perfectamente
para cuando uso datasource para el combo, el problema lo tengo cuando agrego
uno a uno los registros, no me mantiene el ordenamiento, y cuando agrego por
medio de un datasource no se como limitar la cantidad de registros a un
maximo de 10
si se te ocurre que puede ser te agradecere mucho


Saludos,

Walter
"Tristan" escribió en el mensaje
news:
El problema es que estás definiendo un DataView, por cierto de una forma
bastante más complicada de lo necesario, pero lo que recorres es el
DataTable y no el DataView, con lo cual el órden que has establecido no
sirve para nada.

Debes sustituir en la parte final de tu código:

Dim dv As DataView = New DataView(ds_loc2.Tables("tabla_correctos"), "",
"levs ASC", DataViewRowState.CurrentRows)
For Each fila As DataRow In ds_loc2.Tables("tabla_correctos").Rows

Por:

dim vista as new DataView(ds_loc2.Tables("tabla_correctos"))
vista.Sort = "levs"
For Each fila As DataRow In vista

Habría otras optimizaciones en tu código que podrían ser convenientes.

Juan Carlos Badiola
MVP - C#

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida