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

#11 Jordi Maycas
28/08/2007 - 01:25 | Informe spam
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
#12 Jordi Maycas
28/08/2007 - 01:40 | Informe spam
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
#13 Jordi Maycas
28/08/2007 - 01:42 | Informe spam
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
#14 Jordi Maycas
28/08/2007 - 01:46 | Informe spam
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...
>> >>>
>> >>>
>> >>
>> >>
>> >
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#15 Luis Miguel Blanco
28/08/2007 - 17:48 | Informe spam
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...
>> >> >>>
>> >> >>>
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >>
>> >>
>> >>
>>
>>
>>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida