none
Eliminar Filas de un datagridview y refrescar ? RRS feed

Respuestas

  • si el dbf lo cargas a un dataset, lo recorres y solo insertas en el datagridview las posiciones que te interesen...

     
    dim cnt30 as int = 0
    For i = 0 To ds.Tables.Item("dbf").Rows.Count - 1
    
    if cnt30 =0 then
    '....... aqui insertas el codigo para agregar fila al datagrid
    '.......
    elseif cnt30 =30 then
    cnt30 =0
    'volver el contador a 0 para insertar el siguiente en el datagrid
    else
    cnt30 =cnt30 +1
    'solo sumar para saltarse la fila.
    endif
    
    
    
    
    espero te sea util


    A.E.M.C. ____________________________________________________________ Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.
    jueves, 19 de enero de 2012 14:54

Todas las respuestas

  • no entendi

    que serian que queden 4 ? es una especie de paginado

     

    creo que deberias explciar mejor la situacion


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 19 de enero de 2012 13:15
  • Lo siento si no me explique bien.

    cargo varios registros en un datagridview pero necesito que cada 4 registros se eliminen o borren las siguientes 30 filas y vuelva a dejarme los 4 registros siguientes debajo de los 4 primeros y así sucesivamente hasta que recorra por completo el control.

    es decir si tengo 200 registros me muestre los de posicion 0-3, 31-35, 66-70, por poner un ejemplo. 

    la idea es que los 30 entre cada 4 se eliminen y los que deseao mostrar se coloquen debajo de los anteriores refrescando el datagridview 

     

     

    jueves, 19 de enero de 2012 13:41
  • Hola,

    puedes poner un botón para que recorra la grilla con un for each y luego en las posiciones que quieres se borren los registros hacer un

    grilla.Rows.RemoveAt(indice)

    Para que sea dinámico deberías ver la cantidad de filas que tiene la grilla y luego ir chequeando 4 registros y eliminar 30, allí quedarás en la posición 3 con lo cual le deberás sumar 4 para que no borre las 4 siguientes que te interesan y así sucesivamente.

    Se entiende?

    Saludos,

     


    Mariano Llarin.-
    jueves, 19 de enero de 2012 13:57
  • pero no puedes lograr esto en la query que armas aplciando algun filtro ?

    digo seria muchas mas simple si puedes filtrar por el id de la entidad y filtrar por el rango

    pero lo harias en el SELECT antes de cargar el grid

     

    sino la otra podria ser usando linq, pero la veo bastante mas compleja

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 19 de enero de 2012 14:02
  • Gracias por el aporte Mariano. 

    Si entiendo la idea, el problema es que he intentado con el removeat, recorriendo el dgv sacando el total de sus filas

    y luego de la condición de permiso, le hago la función que tu me dices pero, no me ha resultado. la verdad es que me empiezo a abrumar un poco cuando me resultan estas cosas. no estoy paginando desde la consulta sql porque estoy trabajando con un .dbf que contiene la tabla y es bastante limitado a la hora de paginar. por lo tanto, solo he pensado que me queda paginar el dgv.

    he intentado hacerlo paginando los datos con clipboard, creando un documento de texto delimitado, recorriendo todo el dgv y seleccionando, etc. pero hasta ahora nada me ha resultado. gracias por tu aporte de todos modos, de verdad y por la rapidez con la que contestan 

     

    jueves, 19 de enero de 2012 14:03
  • Leandro 

    el problema es precisamente ese, el archivo .dbf que tengo es un previo .Log generado por un PLC por lo tanto la tabla es bastante básica no contiene ID´s ni nada por el estilo, tiene fecha en tipo datetime y tiempo (que necesito filtrar precisamente) en tipo texto. el programa es dinamico ya que esa base de datos la tomo le saco los datos y se elimina y llega otra provienente de otro proceso de registro del PLC. lamentablemente solo puedo tenerla en .dbf manejando por consola el programa que decodifica el .log. y no deseo pasarla a otro motor porque deseo que sea lo mas simple y liviana posible la APP.

    jueves, 19 de enero de 2012 14:08
  • si el dbf lo cargas a un dataset, lo recorres y solo insertas en el datagridview las posiciones que te interesen...

     
    dim cnt30 as int = 0
    For i = 0 To ds.Tables.Item("dbf").Rows.Count - 1
    
    if cnt30 =0 then
    '....... aqui insertas el codigo para agregar fila al datagrid
    '.......
    elseif cnt30 =30 then
    cnt30 =0
    'volver el contador a 0 para insertar el siguiente en el datagrid
    else
    cnt30 =cnt30 +1
    'solo sumar para saltarse la fila.
    endif
    
    
    
    
    espero te sea util


    A.E.M.C. ____________________________________________________________ Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.
    jueves, 19 de enero de 2012 14:54
  • el problema es precisamente ese, el archivo .dbf que tengo es un previo .Log generado por un PLC

    esta db es muy grande ?

    porque sino podrias volcar la informacion a una clase creada por ti y aplciar el filtro en memoria con linq

    el id podrias generarlo en runtime es en definitiva un secuancial por cada registro del 1 a N por cada row que se carga

     

    tambien podrias enumera un campo que agregas al datatable y usar con linq este para filtrarlo

    [Linq] Join DataTable

    el link no aplcia a lo que planteas pero si muestra como usar linq para filtrar en memoria como si fuera sql los datos que tienes cargados

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 19 de enero de 2012 15:01
  • mmmmm el archivo es grande dependiendo del proceso,  el que estoy manejando yo tiene 250.000 filas. pero no demora mucho en cargar( por lo menos en mi equipo) 

    veré lo que me dice Alex Mora, sino me meteré de lleno a lo que me dices tu leandro acerca del Linq. espero resulte pronto 

    gracias por su tiempo 

     

    jueves, 19 de enero de 2012 15:04
  • Lo ideal es que tomes una caracteristica en común que tengan estos registros y filtres a través de una consulta como te dice Leandro.

    Sería muy poco óptimo y un error cargar 250.000 registros solo para borrar 3/4 de los mismos.

    Saludos.


    Santiago Ezequiel Rueda
    santiagorueda@live.com.ar
    Blog

    Entre Ríos
    Argentina
    jueves, 19 de enero de 2012 16:28
  • Sip, eso está mas que claro. si tampoco me gusta la idea no es myu eficiente. el problema radica en el la BBDD es una Dbase, un .dbf y la verdad es que no se como filtrarlo, no me toma los TOP, tampoco los comandos SET FILTER. asi es que estoy tratando de arregarlo de otro modo.

    por lo mismo, pienso que lo unico que me queda es ver lo del dvg pero, tambien por lo visto no hay muchas posibilidades de hacerlo correctamente. termino esto y mi app está casi lista. 

     

    jueves, 19 de enero de 2012 18:09