![]() |
Como meto un valor en un nuevo registro del dataset Hola de nuevo, Tengo un DataGrid, con una columna que al posicionarse encima el cursor, aparece un combobox para seleccionar un dato, que al ser seleccionado, se guarda en el registro en cuestion. Esto funciona bien cuando se trata de modificr un registro existente, ya que con este código: Código: miDataSet.Tables("Urgencias").Rows(Me.BindingContext(miDataSet, "Urgencias").Position).Item("Cliente") = txtComboCliente.SelectedValueEl problema viene cuando se está creando un registro nuevo, ya que me indica que la posicion no existe. Imagino que tiene razón, ya que estoy en una posición que hasta que no lo grabe, no existe. Como podría solucionar este problema? Muchas gracias. |
Hmm, lo veo un poco raro la forma como estás trabajando, puedes enviar más código? Saludos |
Me imagino que previamente tendrás que crear un DataRow nuevo en el datatable del DataSet. Actualizar el Grid y te aparecerá el nuevo registro en blanco en el Grid y ya podrás editarlo. |
Hola, pues la verdad, ese es el unico codigo que tengo en ese evento. En el "On _Selected_Index_Changed_ del combobox" solo tengo esa linea. chcma, no entiendo muy bien tu idea. Ese problema ocurre al hacer el addnew. El tema es que Position me esta devolviendo un numero una unidad mayor que el maximo del dataset. Parece ser que en el dataset todavia no existe el nuevo registro al hacer el addnew, pero si en el Bindingcontext, porqué el tio devuelve bien la Posicion. xknown, qué codigo te pongo? el FormLoad? |
El código lo veo correcto siempre y cuando como dice chcma estés editando, debería poner una condicion: if edicion tucode else dim mirow as datarow = dataset.datable.newrow() mirow(dato)= midato dataset.datatable.addrow(mirow) end if entiendes lo que quiero decir???? |
OK Jose. Voy a probar lo que me dices pero se me escapa algo... tu variable "edicion" que es? como la creas? Cuando el usuario pulsa en "Nuevo", en ese momento la pongo a false? O tengo la forma de saber si se esta editando o no en ese punto? Gracias. |
claro sería por ejemplo un booleano que marca si se está en edición o no, ya como lo implementes dependerá de ti. Yo p.ej. hago que si se pulsa en nuevo a false y si se pulsa sobre editar en algún campo del listado a true (yo no dejo que se edita sin decir primero que se va a editar) |
Buena idea jose. Pero en mi grid se puede editar permanentemente. Pero mira, acabo de dar con una solucion que no se si será lo más correcto, pero ahora si funciona: Sustituyo la linea de arriba por esta: Código: miDatagrid(miDataGrid.CurrentCell.RowNumber, miDataGrid.CurrentCell.ColumnNumber) = txtComboCliente.SelectedValueLe veis algun problema? Gracias y un saludo. |
| La zona horaria es GMT -6. Ahora son las 09:24. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.