none
DataGrid, Ingresar Checbox y textbox en una celda o columna RRS feed

  • Pregunta

  • Que tal compañeros del foro, bueno les planteo mi problema:
    - Eh estado trabajando mas de una semana en una sencilla aplicaicon, tengo un base de datos (sdf) cargada con mucho productos ( + 400) y nesesito de alguna manera poder mostrarlos en pantalla y poder ingresar valores a cada uno.

    -Lo logre haciendo o bueno creando labels y textboxs de manera dinamica es decir por cada registro en tiempo de ejecucion pero es demaciado lento.

    -Y bueno esto ya lo hice en la web y fue sencillo ya que alli se pude editar los controles del grid

    -Ahora bien queria que me ayudaran con ideas, o bien si a un DataGrid en mobile se le puede ingresasr en sus columnas checbos o textbox...

    Gracias..........

     

    miércoles, 16 de abril de 2008 19:31

Respuestas

  •  

    Y quien no se ha encontrado con ese problema...

     

    En Windows Mobile el control DataGrid con el que contamos de partida no permite que sus celdas sean editables y mucho menos que nos muestren checkbox o un campos combobox, pero como suelo decir siempre todo tiene solución, sobre todo en esto de programación.

     

    Un modo efectivo para solventar tu problema es que te crees un control personalizado, por desgracia los controles DataGrid no son heredables pero se puede hacer.

     

    Creas un control de usuario al que le agregas un control DataGrid y despues lo que debes hacer en tiempo de ejecución es que cuando el usuario puntee sobre alguna de las celdas dibujar un textbox dentro del area de la celda y rellenarlo con el valor actual de dicha celda, cuando el usuario cambie de celda o el textbox pierda el foco, vuelcas los datos de nuevo a la celda de partida, de este modo tan solo estás dibujando un único textbox no uno por cada celda de cada uno de los 400 registros.

     

    Currandotelo un poco mas puedes llegar a extraer el tipo de dato de origen y dibujar en la celda en base al campo a mostrar, ya sea un checkbox, combobox o lo que necesites.

     

    Un saludo!

     

    domingo, 20 de abril de 2008 16:05
  • Hola Aragonn

     

    Si te entiendo, por lo que veo estras haciendo una aplicación de preventa o similar, lo que necesitas es que a las columnas que ya tienes en tu tabla de la base de datos son Código, Descripción y Precio pero necesitaríamos agregar las columnas de Cantidad y Valor.

     

    Tenemos dos soluciones una práctica y rápida que sería la de crear dichos campos en tu tabla, lo cual te facilitaría el trabajo a la hora de volcar y manejar los datos (en caso de tener que volver a mostrar al usuario que hes lo que pidió) ya que si creamos las colummnas en tiempo de ejecución estos datos no se van a guardar en la BD (salvo que lo estés haciendo de otra forma claro, que los datos se guarden en otra tabla)

     

    Otra solución (parto de que no se en que modo has estas creando este DataGrid) es la siguiente.

     

    En el diseñador de columnas del DataGrid create tus dos columnas Cantidad y Valor a mayores de las que ya están Codigo, Descripción y Precio.

     

    Despues ve al codigo de tu apliación y pon lo siguiente.

     

    //Cargo los datos de la BD

    this.productosTableAdapter.Fill(this.pruebaaaDataSet.Productos);

     

    //Obtengo el DataTable de los productos

    DataTable dt = productosTableAdapter.GetData();

     

    //Creo las nuevas columnas Ojo con el tipo de dato

    Columna = new DataColumn("Cantidad");

    Columna.DataType = Type.GetType("System.Int16");

    dt.Columns.Add(Columna);

    Columna = new DataColumn("Valor");

    Columna.DataType = Type.GetType("System.Decimal");

    dt.Columns.Add(Columna);

     

    //Asigno mi nueva definición de tabla al DataGrid

    productosDataGrid.DataSource = dt;

    productosDataGrid.Refresh();

     

    Y listo con esto ya se te mostrarán las columnnas.

    Para echarte un cable te he creado una solución funcional con el ejemplo completo, te la cuelgo en:

     

    http://www.mobilenug.com/descargas/Descarga%20de%20soluciones/AgregarColumnas.rar

     

    La solución incluye todo lo que te he comentado sobre el segundo punto, aunque yo optaria por la primera solución, ya que con la segunda si despues quieres guardar los datos te puede dar problemas.

     

    Un saludo.

     Jose Antonio Gallego Salinas

     

    martes, 22 de abril de 2008 7:37

Todas las respuestas

  •  

    Y quien no se ha encontrado con ese problema...

     

    En Windows Mobile el control DataGrid con el que contamos de partida no permite que sus celdas sean editables y mucho menos que nos muestren checkbox o un campos combobox, pero como suelo decir siempre todo tiene solución, sobre todo en esto de programación.

     

    Un modo efectivo para solventar tu problema es que te crees un control personalizado, por desgracia los controles DataGrid no son heredables pero se puede hacer.

     

    Creas un control de usuario al que le agregas un control DataGrid y despues lo que debes hacer en tiempo de ejecución es que cuando el usuario puntee sobre alguna de las celdas dibujar un textbox dentro del area de la celda y rellenarlo con el valor actual de dicha celda, cuando el usuario cambie de celda o el textbox pierda el foco, vuelcas los datos de nuevo a la celda de partida, de este modo tan solo estás dibujando un único textbox no uno por cada celda de cada uno de los 400 registros.

     

    Currandotelo un poco mas puedes llegar a extraer el tipo de dato de origen y dibujar en la celda en base al campo a mostrar, ya sea un checkbox, combobox o lo que necesites.

     

    Un saludo!

     

    domingo, 20 de abril de 2008 16:05
  • Que tal, Jose Antonio, bueno creeo que tu solucion esta super, pero bueno fiajt eque me puede servir pero deja y te comento algo mas:

     

    Yo basicamente lo que tengo es una tabla con n productos y libre de eso nesesito una columna extra donde diga Cantidad asi poder multiplicar el precio por la cantidad y optener un valor pero ahora bien el problema seria agregar columnas extras ah ese grid que lo intente pero no me salieron no se si me podes ayudar con ello

     

    por ejemplo

     

    Codigo                Descripcion               Precio                Cantidad                 Valor

    00x                     xxxxxxxxxx              xx.xx                    xx                        xxx

     

    entonces la tabla trae codigo, descripcion y precio pero cantidad y valor hay que agregar esas columnas y la solucion que me das la aplicaria para la columna o celdas qeu sean de cantidad no se si me entiendes...

     

     

    Gracias

    lunes, 21 de abril de 2008 15:43
  • Hola Aragonn

     

    Si te entiendo, por lo que veo estras haciendo una aplicación de preventa o similar, lo que necesitas es que a las columnas que ya tienes en tu tabla de la base de datos son Código, Descripción y Precio pero necesitaríamos agregar las columnas de Cantidad y Valor.

     

    Tenemos dos soluciones una práctica y rápida que sería la de crear dichos campos en tu tabla, lo cual te facilitaría el trabajo a la hora de volcar y manejar los datos (en caso de tener que volver a mostrar al usuario que hes lo que pidió) ya que si creamos las colummnas en tiempo de ejecución estos datos no se van a guardar en la BD (salvo que lo estés haciendo de otra forma claro, que los datos se guarden en otra tabla)

     

    Otra solución (parto de que no se en que modo has estas creando este DataGrid) es la siguiente.

     

    En el diseñador de columnas del DataGrid create tus dos columnas Cantidad y Valor a mayores de las que ya están Codigo, Descripción y Precio.

     

    Despues ve al codigo de tu apliación y pon lo siguiente.

     

    //Cargo los datos de la BD

    this.productosTableAdapter.Fill(this.pruebaaaDataSet.Productos);

     

    //Obtengo el DataTable de los productos

    DataTable dt = productosTableAdapter.GetData();

     

    //Creo las nuevas columnas Ojo con el tipo de dato

    Columna = new DataColumn("Cantidad");

    Columna.DataType = Type.GetType("System.Int16");

    dt.Columns.Add(Columna);

    Columna = new DataColumn("Valor");

    Columna.DataType = Type.GetType("System.Decimal");

    dt.Columns.Add(Columna);

     

    //Asigno mi nueva definición de tabla al DataGrid

    productosDataGrid.DataSource = dt;

    productosDataGrid.Refresh();

     

    Y listo con esto ya se te mostrarán las columnnas.

    Para echarte un cable te he creado una solución funcional con el ejemplo completo, te la cuelgo en:

     

    http://www.mobilenug.com/descargas/Descarga%20de%20soluciones/AgregarColumnas.rar

     

    La solución incluye todo lo que te he comentado sobre el segundo punto, aunque yo optaria por la primera solución, ya que con la segunda si despues quieres guardar los datos te puede dar problemas.

     

    Un saludo.

     Jose Antonio Gallego Salinas

     

    martes, 22 de abril de 2008 7:37
  • Que tal, Jose Antonio gracias te lo agradescon un monton jejeje me parece efectiva tu solucion, la verdad jaja no te quiero molestar tanto pero fijate que intente con lo anterior del textbox ponerlo en la celda que seleccione y no puedo fijate que lo unico que pude es obtener la Columna y La fila pero no un acho ni una coordenada especifica para dibujar el textbox sera que me podes ayudar porfa... jeje buena onda y gracias
    martes, 22 de abril de 2008 21:07
  • Gracias por el ejemplo me sirvio  bueno ahora solo si me podes ayudar con lo otro jejeje te lo agradeseria un monton jeje

    martes, 22 de abril de 2008 21:15
  • Hola de nuevo:

     

    La solución a eso es mas facil de lo que parece te paso un ejemplo de como poder hacerlo.

     

    Rectangle rectangulo;

    rectangulo = DataGrid1.GetCellBounds(DataGrid1.CurrentCell.RowNumber, DataGrid1.CurrentCell.ColumnNumber);

    TextBoxPrueba.Bounds = this.RectangleToClient(DataGrid1.RectangleToScreen(rectangulo));

    TextBoxPrueba.Location = new Point(rectangulo.Location.X, rectangulo.Location.Y);

     

    Donde TextBoxPrueba será el textbox que hayamos creado en tiempo de ejecución para mostrarlo sobre el DataGrid.

     

    Espero que te sea de ayuda.

    jueves, 24 de abril de 2008 7:16
  • que tal Jose Antonio Gallego ,

     

    Compañero muchisimas gracias tengo el concepto ahora de ello, fijate que si me sirvio vastante y bueno te lo agradesco un monton y gracias estamos en contacto

    sábado, 26 de abril de 2008 5:42
  • Diculpen las molestia, pero no puedes volver a subir el archivo jose antonio gallego , ya que me interesa 

    de antemano gracias por su atencion.


    Pregunta

    miércoles, 25 de julio de 2012 22:04