Please enable / Por favor activa JavaScript!
Por favor activa el Javascript![ ? ]

Pregunta de filtros a un datagrid...  Pregunta de filtros a un datagrid...

Valoración de éste post
4.7 / 5 de 24 votos



Mensajes: 2


Puntos totales:

Enhorabuena!

2





Muy buenas gente, a ver si alguien me puede echar una mano con esto que me tiene loco.

El problema que tengo es que cojo los datos de un archivo de texto y los muestro en un datagrid, después lo que quiero hacer es filtrar del grid a un textbox de un valor numérico.

La tabla original del archivo de texto es ésta (el punto es decimal no es un tanto por mil)

PENDIENTE LONGITUD PARAMETRO VÉRTICE ENTRADA AL ACUERDO SALIDA DEL ACUERDO BISECT. DIF.PEN
9235.410 170.168
0.733333 120.000 20007.047 9365.221 170.263 9305.221 170.219 9425.221 170.667 0.090 0.600
6.731220 50.000 9292.373 9562.563 171.592 9537.563 171.423 9587.563 171.894 0.034 0.538
12.111977 62.627 1250.000 9661.794 172.793 9630.481 172.414 9693.108 171.604 0.392 -5.010
-37.990000 76.629 2100.000 9796.755 167.666 9758.440 169.122 9835.069 167.609 0.350 3.649
-1.500000 58.400 1600.000 10164.710 167.114 10135.510 167.158 10193.910 166.005 0.266 -3.650
-38.000000 190.000 2500.000 10603.699 150.433 10508.699 154.043 10698.699 154.043 1.805 7.600
38.000000 127.750 3500.000 10981.034 164.772 10917.159 162.344 11044.909 164.867 0.583 -3.650
1.500000 57.500 5000.000 11247.151 165.171 11218.401 165.128 11275.901 164.883 0.083 -1.150
-10.000000 192.000 4000.000 11784.128 159.801 11688.128 160.761 11880.128 163.449 1.152 4.800
38.000000 127.750 3500.000 12152.330 173.793 12088.455 171.365 12216.205 173.888 0.583 -3.650
1.500000 301.486 8305.404 12489.698 174.299 12338.955 174.073 12640.441 179.997 1.368 3.630
37.800000 72.600 2000.000 12982.120 192.912 12945.820 191.540 13018.420 192.967 0.329 -3.630
1.500000 67.500 15000.000 13232.408 193.288 13198.658 193.237 13266.158 193.490 0.038 0.450
6.000000 96.000 4000.000 13455.722 194.628 13407.722 194.340 13503.722 196.068 0.288 2.400
30.000000 57.000 2000.000 14328.915 220.823 14300.415 219.968 14357.415 220.866 0.203 -2.850
1.500000 14507.282 221.091

El grid me muestra lo siguiente (lo tengo configurado cómo valores numéricos y a tres decimales)

0 0 0 0 0 9235,41 170,168 0 0 0 0
0,733 120,000 20.007,040 9.365,221 170,263 9.305,221 170,219 9.425,221 170,667 0,090 0,600
6,73122 50 9292,37 9562,563 171,592 9537,563 171,423 9587,563 171,894 0,034 0,538
12,112 62,627 1.250,000 9.661,794 172,793 9.630,481 172,414 9.693,108 171,604 0,392 -5,010
-37,99 76,629 2100 9796,755 167,666 9758,44 169,122 9835,069 167,609 0,35 3,649
-1,500 58,400 1.600,000 10.164,710 167,114 10.135,510 167,158 10.193,910 166,005 0,266 -3,650
-38 190 2500 10603,699 150,433 10508,699 154,043 10698,699 154,043 1,805 7,6
38,000 127,750 3.500,000 10.981,034 164,772 10.917,159 162,344 11.044,909 164,867 0,583 -3,650
1,5 57,5 5000 11247,151 165,171 11218,401 165,128 11275,901 164,883 0,083 -1,15
-10,000 192,000 4.000,000 11.784,128 159,801 11.688,128 160,761 11.880,128 163,449 1,152 4,800
38 127,75 3500 12152,33 173,793 12088,455 171,365 12216,205 173,888 0,583 -3,65
1,500 301,486 8.305,400 12.489,698 174,299 12.338,955 174,073 12.640,441 179,997 1,368 3,630
37,8 72,6 2000 12982,12 192,912 12945,82 191,54 13018,42 192,967 0,329 -3,63
1,500 67,500 15.000,000 13.232,408 193,288 13.198,658 193,237 13.266,158 193,490 0,038 0,450
6 96 4000 13455,722 194,628 13407,722 194,34 13503,722 196,068 0,288 2,4
30,000 57,000 2.000,000 14.328,915 220,823 14.300,415 219,968 14.357,415 220,866 0,203 -2,850
1,5 0 0 0 0 0 0 14507,282 221,091 0 0

La idea es coger el grid, pasarlo a datatable, hacer el filtro y volverlo a cargar con el código (desconozco si es la mejor opción)


 Dim dset As New DataSet
        dset.Tables.Add()

       For i As Integer = 0 To DataGridView1.ColumnCount - 1
            dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText)
        Next


        Dim dr1 As DataRow
        For i As Integer = 0 To DataGridView1.RowCount - 1
            dr1 = dset.Tables(0).NewRow
            For j As Integer = 0 To DataGridView1.Columns.Count - 1
                dr1(j) = CDbl(DataGridView1.Rows(i).Cells(j).Value)
            Next
            dset.Tables(0).Rows.Add(dr1)
        Next

        Dim dv As New DataView
        '  Dim filtro As String

        dv = dset.Tables(0).DefaultView

        Try
            Dim query = From dr As DataRow In dset.Tables(0).Rows Where CDbl(dr("Longiud").ToString) > 50
            DataGridView1.DataSource = query

            MsgBox(DataGridView1.Rows.Count)
         
            DataGridView1.Refresh()

            MsgBox(DataGridView1.Rows.Count)

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Error en la consulta")
        End Try



El msgbox de datagridview1.rows.count me muestra siempre 0 ,o sea nada de nada y la cadena Dim query = From dr As DataRow In dset.Tables(0).Rows Where CDbl(dr("Longiud").ToString) > 50 es para hacer un test, el 50 vendría a ser el textbox.text

A ver si alguien me puede echar una mano.

Gracias !!!

Serra





No te pierdas el tema anterior: Visual Studio 2013… ¡ya están aquíiiii!

Salta al siguiente tema: Curso completo de Visual basic.NET (2012)

Quizás también te interese:



Mensajes: 1237


Puntos totales:

Enhorabuena!

32





Si has encontrado información útil en Exaforo, ayúdanos a seguir creciendo. Muchas gracias por confiar en nosotros!



Volver a Visual Basic