datagridview y combobox

26/08/2007 - 19:14 por Jordi Maycas | Informe spam
Hola!

Bueno ahora me surge el como podria modificar una de las columnas, para que
en vez de haber el tipic textbox, haya un combobox, y sus items sean el
resultado de una select.

Mas claro... datagrid con pedidos a mayoristas, y hay q dar de alta un nuevo
pedido, a un mayorista X; en vez de tener que teclear el CIF o nombre, pues
que te salga un combo.. total habran 2 o 3 mayoristas, y siempre sera mas
rapido.

He mirado googleando, pero con librerias de terceros...

Preguntas similare

Leer las respuestas

#16 Luis Miguel Blanco
28/08/2007 - 17:58 | Informe spam
OK, acabo de enviarte el proyecto que he creado para que puedas probarlo, a
ver si te funciona y consigues que el breakpoint pare en el evento 8-)
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jordi Maycas" wrote:

voy a probar a ver lo comentado.

Si quieres pasarme aquello me lo puedes enviar a @hotmail.com

"Luis Miguel Blanco" escribió
en el mensaje news:
> Hola Jordi
>
> Para que pase por el breakpoint del evento CellEndEdit del grid, una vez
> que
> hayas seleccionado un nuevo valor en la lista de la celda que tiene el
> combobox, cambia a otra celda del mismo u otro registro, ya que hasta que
> no
> pierde el foco la celda que estás editando, no se produce ese evento.
>
> Respecto a la funcionalidad que comentas cuando haces clic en una cabecera
> de columna, lo que sucede, y supongo que ya habrás observado, es que se
> ordenan los datos de dicha columna en ascendente/descendente. Se trata de
> una
> característica que incluye el DataGridView por defecto, pero si no quieres
> que se ordenen automáticamente, puedes deshabilitarla, aunque deberás
> hacerlo
> para cada columna del control, usando la propiedad SortMode, de forma
> parecida al siguiente ejemplo:
>
> this.dataGridView1.Columns["NombreColumna"].SortMode > > DataGridViewColumnSortMode.NotSortable;
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
>
>
> "Jordi Maycas" wrote:
>
>> En principio he puesto un breakpoint en esa funcion, pero curiosamente no
>> pasa por ahi nunca... seguire probando y revisare que eventos produce un
>> dbgrid de esos.
>>
>> Por otro lado, algo que me confundio pero que realmente no implica nada
>> en
>> cuanto a funcionamiento, pero si que no queda bien, es que si por error
>> hago
>> click en el titulo de las columnas del datagridview, me sale como una
>> flecha
>> mirando abajo, como si fuera un combo, pero sin desplegarse, y si le
>> vuelvo
>> a hacer click cambia la orientacion de la misma.
>>
>> curioso
>>
>> "Luis Miguel Blanco"
>> escribió
>> en el mensaje news:
>> > Hola Jordi
>> >
>> > No estoy muy seguro de si esto será exactamente lo que necesitas, pero
>> > prueba a utilizar el evento DataGridView.CellEndEdit, en el que
>> > compruebas
>> > si
>> > la columna que se está manejando es la correspondiente al combo. En
>> > caso
>> > afirmativo, obtienes el valor que necesitas actualizar en el DataSet,
>> > el
>> > registro sobre el que has de actualizar dicho valor, y realizas la
>> > actualización manualmente de forma similar a como puedes ver en el
>> > siguiente
>> > bloque de código de ejemplo:
>> >
>> > //
>> > private void grdDatos_CellEndEdit(object sender,
>> > DataGridViewCellEventArgs
>> > e)
>> > {
>> > // después de editar la celda de la columna de tipo ComboBox
>> > // actualizamos el nuevo valor en el campo del DataSet
>> > // subyacente del DataGridView
>> > if (this.grdDatos.Columns[e.ColumnIndex].Name == "colComboBox")
>> > {
>> > // obtener el valor a actualizar
>> > int nCategoryID > >> > (int)this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> >
>> > // obtener el registro a actualizar
>> > DataRow drFilaProducto > >> > ((DataSet)this.grdDatos.DataSource).Tables["Products"].Rows[e.RowIndex];
>> >
>> > // actualizar el campo
>> > drFilaProducto.BeginEdit();
>> > drFilaProducto["CategoryID"] > >> > this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> > drFilaProducto.EndEdit();
>> > }
>> > }
>> > //
>> >
>> > Espero que te sirva de ayuda.
>> >
>> > Un saludo
>> > Luis Miguel Blanco
>> > http://www.dotnetmania.com
>> >
>> >
>> > "Jordi Maycas" wrote:
>> >
>> >> curioso... resulta que una vez le he validado el dbgrid, me actualiza
>> >> la
>> >> tabla, pero en el campo en donde estaba el combobox, me lo pone en
>> >> blanco,y
>> >> tendria que ponerme el identificador correspondiente al item del
>> >> combobox
>> >> seleccionado, es decir, en el combobox saldran mayoristas (unos dos o
>> >> tres).
>> >> si selecciono el mayorista1, me tendria que salvar en la tabla el cif
>> >> del
>> >> mayorista1, que esta en la tabla mayoristas. Teniendo en cuenta que el
>> >> dbgrid es de la tabla pedidos, y que en la misma hay un campo
>> >> mayorista
>> >> como
>> >> clave foranea.
>> >>
>> >> Espero haber sido claro.
>> >>
>> >> El tema esta en que:
>> >>
>> >> Una vez se ha dicho que una columna, sera de un tipo combo, y de que
>> >> de
>> >> donde tiene que sacar los items para rellenarlo, ¿donde se le dice que
>> >> es
>> >> lo
>> >> que tiene que salvar en la bbdd, una vez se selecciona un elemento del
>> >> combo?
>> >>
>> >> "Jordi Maycas" escribió en el mensaje
>> >> news:%
>> >> > solucionado... desde el mismo ide, se puede hacer un edittable,
>> >> > apretando
>> >> > boton derecho en el dbgrid, y te dice el tipo de celda q quieres y
>> >> > el
>> >> > orgien de datos.
>> >> >
>> >> >
>> >> > "Jordi Maycas" escribió en el mensaje
>> >> > news:%
>> >> >> hay algo mas simple?
>> >> >> http://msdn2.microsoft.com/en-us/li...olumn.aspx
>> >> >>
>> >> >> "Jordi Maycas" escribió en el mensaje
>> >> >> news:
>> >> >>> Hola!
>> >> >>>
>> >> >>> Bueno ahora me surge el como podria modificar una de las columnas,
>> >> >>> para
>> >> >>> que en vez de haber el tipic textbox, haya un combobox, y sus
>> >> >>> items
>> >> >>> sean
>> >> >>> el resultado de una select.
>> >> >>>
>> >> >>> Mas claro... datagrid con pedidos a mayoristas, y hay q dar de
>> >> >>> alta
>> >> >>> un
>> >> >>> nuevo pedido, a un mayorista X; en vez de tener que teclear el CIF
>> >> >>> o
>> >> >>> nombre, pues que te salga un combo.. total habran 2 o 3
>> >> >>> mayoristas, y
>> >> >>> siempre sera mas rapido.
>> >> >>>
>> >> >>> He mirado googleando, pero con librerias de terceros...
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#17 Luis Miguel Blanco
28/08/2007 - 18:00 | Informe spam
En el proyecto que te he enviado, prueba a poner el breakpoint en ese evento
del DataGridView, abre uno de los combobox de la columna del grid, cambia el
valor, y pasa a otra celda. Con eso se debería producir el evento y hacer la
parada en el punto de ruptura.
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jordi Maycas" wrote:

Respecto al cellendedit, he añadido esta funcion y he puesto un breakpoint
en la primera linea (la del if), y no se detiene ni al ir rellenando los
campos del primer registros ni al clicar en el segundo en cualquier celda...



private void dataGridView1_CellEndEdit(object sender,
DataGridViewCellEventArgs e)

{

// después de editar la celda de la columna de tipo ComboBox

// actualizamos el nuevo valor en el campo del DataSet

// subyacente del DataGridView

if (this.dataGridView1.Columns[e.ColumnIndex].Name == "colComboBox")

{

// obtener el valor a actualizar

int nCategoryID >
(int)this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

// obtener el registro a actualizar

DataRow drFilaProducto >
((DataSet)this.dataGridView1.DataSource).Tables["Products"].Rows[e.RowIndex];

// actualizar el campo

drFilaProducto.BeginEdit();

drFilaProducto["CategoryID"] >
this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

drFilaProducto.EndEdit();

}

}

"Luis Miguel Blanco" escribió
en el mensaje news:
> Hola Jordi
>
> Para que pase por el breakpoint del evento CellEndEdit del grid, una vez
> que
> hayas seleccionado un nuevo valor en la lista de la celda que tiene el
> combobox, cambia a otra celda del mismo u otro registro, ya que hasta que
> no
> pierde el foco la celda que estás editando, no se produce ese evento.
>
> Respecto a la funcionalidad que comentas cuando haces clic en una cabecera
> de columna, lo que sucede, y supongo que ya habrás observado, es que se
> ordenan los datos de dicha columna en ascendente/descendente. Se trata de
> una
> característica que incluye el DataGridView por defecto, pero si no quieres
> que se ordenen automáticamente, puedes deshabilitarla, aunque deberás
> hacerlo
> para cada columna del control, usando la propiedad SortMode, de forma
> parecida al siguiente ejemplo:
>
> this.dataGridView1.Columns["NombreColumna"].SortMode > > DataGridViewColumnSortMode.NotSortable;
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
>
>
> "Jordi Maycas" wrote:
>
>> En principio he puesto un breakpoint en esa funcion, pero curiosamente no
>> pasa por ahi nunca... seguire probando y revisare que eventos produce un
>> dbgrid de esos.
>>
>> Por otro lado, algo que me confundio pero que realmente no implica nada
>> en
>> cuanto a funcionamiento, pero si que no queda bien, es que si por error
>> hago
>> click en el titulo de las columnas del datagridview, me sale como una
>> flecha
>> mirando abajo, como si fuera un combo, pero sin desplegarse, y si le
>> vuelvo
>> a hacer click cambia la orientacion de la misma.
>>
>> curioso
>>
>> "Luis Miguel Blanco"
>> escribió
>> en el mensaje news:
>> > Hola Jordi
>> >
>> > No estoy muy seguro de si esto será exactamente lo que necesitas, pero
>> > prueba a utilizar el evento DataGridView.CellEndEdit, en el que
>> > compruebas
>> > si
>> > la columna que se está manejando es la correspondiente al combo. En
>> > caso
>> > afirmativo, obtienes el valor que necesitas actualizar en el DataSet,
>> > el
>> > registro sobre el que has de actualizar dicho valor, y realizas la
>> > actualización manualmente de forma similar a como puedes ver en el
>> > siguiente
>> > bloque de código de ejemplo:
>> >
>> > //
>> > private void grdDatos_CellEndEdit(object sender,
>> > DataGridViewCellEventArgs
>> > e)
>> > {
>> > // después de editar la celda de la columna de tipo ComboBox
>> > // actualizamos el nuevo valor en el campo del DataSet
>> > // subyacente del DataGridView
>> > if (this.grdDatos.Columns[e.ColumnIndex].Name == "colComboBox")
>> > {
>> > // obtener el valor a actualizar
>> > int nCategoryID > >> > (int)this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> >
>> > // obtener el registro a actualizar
>> > DataRow drFilaProducto > >> > ((DataSet)this.grdDatos.DataSource).Tables["Products"].Rows[e.RowIndex];
>> >
>> > // actualizar el campo
>> > drFilaProducto.BeginEdit();
>> > drFilaProducto["CategoryID"] > >> > this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> > drFilaProducto.EndEdit();
>> > }
>> > }
>> > //
>> >
>> > Espero que te sirva de ayuda.
>> >
>> > Un saludo
>> > Luis Miguel Blanco
>> > http://www.dotnetmania.com
>> >
>> >
>> > "Jordi Maycas" wrote:
>> >
>> >> curioso... resulta que una vez le he validado el dbgrid, me actualiza
>> >> la
>> >> tabla, pero en el campo en donde estaba el combobox, me lo pone en
>> >> blanco,y
>> >> tendria que ponerme el identificador correspondiente al item del
>> >> combobox
>> >> seleccionado, es decir, en el combobox saldran mayoristas (unos dos o
>> >> tres).
>> >> si selecciono el mayorista1, me tendria que salvar en la tabla el cif
>> >> del
>> >> mayorista1, que esta en la tabla mayoristas. Teniendo en cuenta que el
>> >> dbgrid es de la tabla pedidos, y que en la misma hay un campo
>> >> mayorista
>> >> como
>> >> clave foranea.
>> >>
>> >> Espero haber sido claro.
>> >>
>> >> El tema esta en que:
>> >>
>> >> Una vez se ha dicho que una columna, sera de un tipo combo, y de que
>> >> de
>> >> donde tiene que sacar los items para rellenarlo, ¿donde se le dice que
>> >> es
>> >> lo
>> >> que tiene que salvar en la bbdd, una vez se selecciona un elemento del
>> >> combo?
>> >>
>> >> "Jordi Maycas" escribió en el mensaje
>> >> news:%
>> >> > solucionado... desde el mismo ide, se puede hacer un edittable,
>> >> > apretando
>> >> > boton derecho en el dbgrid, y te dice el tipo de celda q quieres y
>> >> > el
>> >> > orgien de datos.
>> >> >
>> >> >
>> >> > "Jordi Maycas" escribió en el mensaje
>> >> > news:%
>> >> >> hay algo mas simple?
>> >> >> http://msdn2.microsoft.com/en-us/li...olumn.aspx
>> >> >>
>> >> >> "Jordi Maycas" escribió en el mensaje
>> >> >> news:
>> >> >>> Hola!
>> >> >>>
>> >> >>> Bueno ahora me surge el como podria modificar una de las columnas,
>> >> >>> para
>> >> >>> que en vez de haber el tipic textbox, haya un combobox, y sus
>> >> >>> items
>> >> >>> sean
>> >> >>> el resultado de una select.
>> >> >>>
>> >> >>> Mas claro... datagrid con pedidos a mayoristas, y hay q dar de
>> >> >>> alta
>> >> >>> un
>> >> >>> nuevo pedido, a un mayorista X; en vez de tener que teclear el CIF
>> >> >>> o
>> >> >>> nombre, pues que te salga un combo.. total habran 2 o 3
>> >> >>> mayoristas, y
>> >> >>> siempre sera mas rapido.
>> >> >>>
>> >> >>> He mirado googleando, pero con librerias de terceros...
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
#18 Luis Miguel Blanco
28/08/2007 - 18:06 | Informe spam
Hola Jordi

Tranquilo que no hay pregunta tonta sino ganas de aprender, así que a ver si
te puedo ayudar 8-)

Yo creo la columna de tipo combo por código, aunque si lo haces por diseño
debería de funcionar igualmente. El valor que debes buscar después en el
evento CellEndEdit es, en efecto, el que has asignado a la propiedad Name del
objeto columna. De forma resumida esto es lo que hago:

//
// creo por código un objeto columna de tipo combobox, lo configuro y añado
// a la colección de columnas del grid
DataGridViewComboBoxColumn colComboBox = new DataGridViewComboBoxColumn();
colComboBox.Name = "colComboBox";
//
this.grdDatos.Columns.Add(colComboBox);

// en el evento CellEndEdit, utilizo el segundo parámetro que recibe
// para comprobar si la columna con la que estamos trabajando es la que
necesitamos
private void grdDatos_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (this.grdDatos.Columns[e.ColumnIndex].Name == "colComboBox")
{
//
//
}
}
//

Espero que te sirva de ayuda

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jordi Maycas" wrote:

pregunta tonta diria yo:

¿Cual es el nombre de la columna? Refiriendome a la columna que tiene los
combo...

He probado tanto con el Design (Name) que tengo Mayorista, como con el Data
(DataPropertyName) que tengo mayorista, y al poner un breakpoint me dice que
no hay nada asignado al string dado.

sigo probando con el resto.


> escribió en el mensaje
> news:
> Hola Jordi
>
> Utilizando la propiedad CurrentRow del DataGridView puedes llegar al valor
> de una celda de la siguiente manera:
>
> this.dataGridView1.CurrentRow.Cells["NombreColumna"].Value;
>
> Espero que te sirva de ayuda
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
>
>
> "Jordi Maycas" wrote:
>
>> esta el currentrow.cell.list, pero no se llegar hasta el valor del
>> combobox.
>>
>> "Jordi Maycas" escribió en el mensaje
>> news:O$
>> > En principio he puesto un breakpoint en esa funcion, pero curiosamente
>> > no
>> > pasa por ahi nunca... seguire probando y revisare que eventos produce
>> > un
>> > dbgrid de esos.
>> >
>> > Por otro lado, algo que me confundio pero que realmente no implica nada
>> > en
>> > cuanto a funcionamiento, pero si que no queda bien, es que si por error
>> > hago click en el titulo de las columnas del datagridview, me sale como
>> > una
>> > flecha mirando abajo, como si fuera un combo, pero sin desplegarse, y
>> > si
>> > le vuelvo a hacer click cambia la orientacion de la misma.
>> >
>> > curioso
>> >
>> > "Luis Miguel Blanco"
>> > escribió
>> > en el mensaje
>> > news:
>> >> Hola Jordi
>> >>
>> >> No estoy muy seguro de si esto será exactamente lo que necesitas, pero
>> >> prueba a utilizar el evento DataGridView.CellEndEdit, en el que
>> >> compruebas si
>> >> la columna que se está manejando es la correspondiente al combo. En
>> >> caso
>> >> afirmativo, obtienes el valor que necesitas actualizar en el DataSet,
>> >> el
>> >> registro sobre el que has de actualizar dicho valor, y realizas la
>> >> actualización manualmente de forma similar a como puedes ver en el
>> >> siguiente
>> >> bloque de código de ejemplo:
>> >>
>> >> //
>> >> private void grdDatos_CellEndEdit(object sender,
>> >> DataGridViewCellEventArgs e)
>> >> {
>> >> // después de editar la celda de la columna de tipo ComboBox
>> >> // actualizamos el nuevo valor en el campo del DataSet
>> >> // subyacente del DataGridView
>> >> if (this.grdDatos.Columns[e.ColumnIndex].Name == "colComboBox")
>> >> {
>> >> // obtener el valor a actualizar
>> >> int nCategoryID > >> >> (int)this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> >>
>> >> // obtener el registro a actualizar
>> >> DataRow drFilaProducto > >> >> ((DataSet)this.grdDatos.DataSource).Tables["Products"].Rows[e.RowIndex];
>> >>
>> >> // actualizar el campo
>> >> drFilaProducto.BeginEdit();
>> >> drFilaProducto["CategoryID"] > >> >> this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> >> drFilaProducto.EndEdit();
>> >> }
>> >> }
>> >> //
>> >>
>> >> Espero que te sirva de ayuda.
>> >>
>> >> Un saludo
>> >> Luis Miguel Blanco
>> >> http://www.dotnetmania.com
>> >>
>> >>
>> >> "Jordi Maycas" wrote:
>> >>
>> >>> curioso... resulta que una vez le he validado el dbgrid, me actualiza
>> >>> la
>> >>> tabla, pero en el campo en donde estaba el combobox, me lo pone en
>> >>> blanco,y
>> >>> tendria que ponerme el identificador correspondiente al item del
>> >>> combobox
>> >>> seleccionado, es decir, en el combobox saldran mayoristas (unos dos o
>> >>> tres).
>> >>> si selecciono el mayorista1, me tendria que salvar en la tabla el cif
>> >>> del
>> >>> mayorista1, que esta en la tabla mayoristas. Teniendo en cuenta que
>> >>> el
>> >>> dbgrid es de la tabla pedidos, y que en la misma hay un campo
>> >>> mayorista
>> >>> como
>> >>> clave foranea.
>> >>>
>> >>> Espero haber sido claro.
>> >>>
>> >>> El tema esta en que:
>> >>>
>> >>> Una vez se ha dicho que una columna, sera de un tipo combo, y de que
>> >>> de
>> >>> donde tiene que sacar los items para rellenarlo, ¿donde se le dice
>> >>> que
>> >>> es lo
>> >>> que tiene que salvar en la bbdd, una vez se selecciona un elemento
>> >>> del
>> >>> combo?
>> >>>
>> >>> "Jordi Maycas" escribió en el mensaje
>> >>> news:%
>> >>> > solucionado... desde el mismo ide, se puede hacer un edittable,
>> >>> > apretando
>> >>> > boton derecho en el dbgrid, y te dice el tipo de celda q quieres y
>> >>> > el
>> >>> > orgien de datos.
>> >>> >
>> >>> >
>> >>> > "Jordi Maycas" escribió en el mensaje
>> >>> > news:%
>> >>> >> hay algo mas simple?
>> >>> >> http://msdn2.microsoft.com/en-us/li...olumn.aspx
>> >>> >>
>> >>> >> "Jordi Maycas" escribió en el mensaje
>> >>> >> news:
>> >>> >>> Hola!
>> >>> >>>
>> >>> >>> Bueno ahora me surge el como podria modificar una de las
>> >>> >>> columnas,
>> >>> >>> para
>> >>> >>> que en vez de haber el tipic textbox, haya un combobox, y sus
>> >>> >>> items
>> >>> >>> sean
>> >>> >>> el resultado de una select.
>> >>> >>>
>> >>> >>> Mas claro... datagrid con pedidos a mayoristas, y hay q dar de
>> >>> >>> alta
>> >>> >>> un
>> >>> >>> nuevo pedido, a un mayorista X; en vez de tener que teclear el
>> >>> >>> CIF o
>> >>> >>> nombre, pues que te salga un combo.. total habran 2 o 3
>> >>> >>> mayoristas,
>> >>> >>> y
>> >>> >>> siempre sera mas rapido.
>> >>> >>>
>> >>> >>> He mirado googleando, pero con librerias de terceros...
>> >>> >>>
>> >>> >>>
>> >>> >>
>> >>> >>
>> >>> >
>> >>> >
>> >>>
>> >>>
>> >>>
>> >
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#19 Jordi Maycas
28/08/2007 - 21:14 | Informe spam
ok, gracias;estare un tiempo revisando lo q me mandaste.. cualquier cosa te
vuelvo a comerntar

gracias de nuevo

"Luis Miguel Blanco" escribió
en el mensaje news:
Debemos tener en cuenta que la pulsación de la tecla flecha abajo está
reservada a las operaciones de navegación por las celdas del DataGridView.
Si
no quieres utilizar el ratón para desplegar la lista de elementos de una
celda de tipo combo, y sólo quieres usar el teclado, utiliza la
combinación
de teclas ALT + Flecha Abajo, de esta forma se abre la lista de la celda
combo.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jordi Maycas" wrote:

a parte de todo una mejora diria yo, pero que he visto en controles de
este
tipo en la mayoria de programas y es que si hago click en el combo y
aunque solo haya un item, si aprieto la flecha hacia abajo deberia
salirme
ese item, y no hace nada asi que tengo que hacerlo todo con el raton.

"Luis Miguel Blanco"
escribió
en el mensaje news:
> Hola Jordi
>
> Para que pase por el breakpoint del evento CellEndEdit del grid, una
> vez
> que
> hayas seleccionado un nuevo valor en la lista de la celda que tiene el
> combobox, cambia a otra celda del mismo u otro registro, ya que hasta
> que
> no
> pierde el foco la celda que estás editando, no se produce ese evento.
>
> Respecto a la funcionalidad que comentas cuando haces clic en una
> cabecera
> de columna, lo que sucede, y supongo que ya habrás observado, es que se
> ordenan los datos de dicha columna en ascendente/descendente. Se trata
> de
> una
> característica que incluye el DataGridView por defecto, pero si no
> quieres
> que se ordenen automáticamente, puedes deshabilitarla, aunque deberás
> hacerlo
> para cada columna del control, usando la propiedad SortMode, de forma
> parecida al siguiente ejemplo:
>
> this.dataGridView1.Columns["NombreColumna"].SortMode >> > DataGridViewColumnSortMode.NotSortable;
>
> Espero que te sirva de ayuda.
>
> Un saludo
> Luis Miguel Blanco
> http://www.dotnetmania.com
>
>
> "Jordi Maycas" wrote:
>
>> En principio he puesto un breakpoint en esa funcion, pero curiosamente
>> no
>> pasa por ahi nunca... seguire probando y revisare que eventos produce
>> un
>> dbgrid de esos.
>>
>> Por otro lado, algo que me confundio pero que realmente no implica
>> nada
>> en
>> cuanto a funcionamiento, pero si que no queda bien, es que si por
>> error
>> hago
>> click en el titulo de las columnas del datagridview, me sale como una
>> flecha
>> mirando abajo, como si fuera un combo, pero sin desplegarse, y si le
>> vuelvo
>> a hacer click cambia la orientacion de la misma.
>>
>> curioso
>>
>> "Luis Miguel Blanco"
>> escribió
>> en el mensaje
>> news:
>> > Hola Jordi
>> >
>> > No estoy muy seguro de si esto será exactamente lo que necesitas,
>> > pero
>> > prueba a utilizar el evento DataGridView.CellEndEdit, en el que
>> > compruebas
>> > si
>> > la columna que se está manejando es la correspondiente al combo. En
>> > caso
>> > afirmativo, obtienes el valor que necesitas actualizar en el
>> > DataSet,
>> > el
>> > registro sobre el que has de actualizar dicho valor, y realizas la
>> > actualización manualmente de forma similar a como puedes ver en el
>> > siguiente
>> > bloque de código de ejemplo:
>> >
>> > //
>> > private void grdDatos_CellEndEdit(object sender,
>> > DataGridViewCellEventArgs
>> > e)
>> > {
>> > // después de editar la celda de la columna de tipo ComboBox
>> > // actualizamos el nuevo valor en el campo del DataSet
>> > // subyacente del DataGridView
>> > if (this.grdDatos.Columns[e.ColumnIndex].Name == "colComboBox")
>> > {
>> > // obtener el valor a actualizar
>> > int nCategoryID >> >> > (int)this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> >
>> > // obtener el registro a actualizar
>> > DataRow drFilaProducto >> >> > ((DataSet)this.grdDatos.DataSource).Tables["Products"].Rows[e.RowIndex];
>> >
>> > // actualizar el campo
>> > drFilaProducto.BeginEdit();
>> > drFilaProducto["CategoryID"] >> >> > this.grdDatos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
>> > drFilaProducto.EndEdit();
>> > }
>> > }
>> > //
>> >
>> > Espero que te sirva de ayuda.
>> >
>> > Un saludo
>> > Luis Miguel Blanco
>> > http://www.dotnetmania.com
>> >
>> >
>> > "Jordi Maycas" wrote:
>> >
>> >> curioso... resulta que una vez le he validado el dbgrid, me
>> >> actualiza
>> >> la
>> >> tabla, pero en el campo en donde estaba el combobox, me lo pone en
>> >> blanco,y
>> >> tendria que ponerme el identificador correspondiente al item del
>> >> combobox
>> >> seleccionado, es decir, en el combobox saldran mayoristas (unos dos
>> >> o
>> >> tres).
>> >> si selecciono el mayorista1, me tendria que salvar en la tabla el
>> >> cif
>> >> del
>> >> mayorista1, que esta en la tabla mayoristas. Teniendo en cuenta que
>> >> el
>> >> dbgrid es de la tabla pedidos, y que en la misma hay un campo
>> >> mayorista
>> >> como
>> >> clave foranea.
>> >>
>> >> Espero haber sido claro.
>> >>
>> >> El tema esta en que:
>> >>
>> >> Una vez se ha dicho que una columna, sera de un tipo combo, y de
>> >> que
>> >> de
>> >> donde tiene que sacar los items para rellenarlo, ¿donde se le dice
>> >> que
>> >> es
>> >> lo
>> >> que tiene que salvar en la bbdd, una vez se selecciona un elemento
>> >> del
>> >> combo?
>> >>
>> >> "Jordi Maycas" escribió en el mensaje
>> >> news:%
>> >> > solucionado... desde el mismo ide, se puede hacer un edittable,
>> >> > apretando
>> >> > boton derecho en el dbgrid, y te dice el tipo de celda q quieres
>> >> > y
>> >> > el
>> >> > orgien de datos.
>> >> >
>> >> >
>> >> > "Jordi Maycas" escribió en el mensaje
>> >> > news:%
>> >> >> hay algo mas simple?
>> >> >> http://msdn2.microsoft.com/en-us/li...olumn.aspx
>> >> >>
>> >> >> "Jordi Maycas" escribió en el
>> >> >> mensaje
>> >> >> news:
>> >> >>> Hola!
>> >> >>>
>> >> >>> Bueno ahora me surge el como podria modificar una de las
>> >> >>> columnas,
>> >> >>> para
>> >> >>> que en vez de haber el tipic textbox, haya un combobox, y sus
>> >> >>> items
>> >> >>> sean
>> >> >>> el resultado de una select.
>> >> >>>
>> >> >>> Mas claro... datagrid con pedidos a mayoristas, y hay q dar de
>> >> >>> alta
>> >> >>> un
>> >> >>> nuevo pedido, a un mayorista X; en vez de tener que teclear el
>> >> >>> CIF
>> >> >>> o
>> >> >>> nombre, pues que te salga un combo.. total habran 2 o 3
>> >> >>> mayoristas, y
>> >> >>> siempre sera mas rapido.
>> >> >>>
>> >> >>> He mirado googleando, pero con librerias de terceros...
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>>
>>
>>



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