miércoles, septiembre 05, 2007

Simular un Datagrid Editable en Compact Framework .NET

Bueno en primer lugar el proyecto es un proyecto Smart Device Application y dejamos la forma que por defecto coloca Visual Studio.

Agrego un control DataGrid, un TextBox y un control Button, este control button sera invisible, lo pueden cambiar por una funcion o un procedimeinto, yo lo deje asi, pues parti d eun ejemplo con esxte control.

El control TextBox tambien esta invisible.

El evento Load de la forma lo que hago basicamente es llenar el control DataGrid con un dataTable creado en tiempo de ejecucion, con 10 filas ( de la cero a la diez) y cuatro columnas (de la cero a la tres).

Cada celda de la Grilla se llena con un texto generado tambein dentro del evento load.

Al hacer clic sobre una celda del Datagrid se genera o dispara el evento CurrentCellChanged, en este evento se muestra el textbox y se llena con el valor que se encuentre en la celda seleccionada. Lo mas importante aqui es que tambien se le asignan las dimensiones que tiene la celda al control textbox y se lo coloca en la posicion correcta, la linea de codigo que hace esto es:
.TextBox1.Bounds = dgList.GetCellBounds(dgList.CurrentRowIndex, dgList.CurrentCell.ColumnNumber)

Me

Luego de esto, se coloca el control textBox en visible = true para mostrarlo.

En el evento GotFocus del control TextBox, se selecciona el texto que contenga con el metodo .SelectAll().

Utilizo tambien el evento KeyPress del textbox para verificar si se presiono ENTER, si es asi, llamo al procedimiento Button1_Click , que como dije antes puede ser una funcion o un procedimiento, y oculto el control textbox.

El procedimiento Button_Click, lo que hace es actualizar la celda seleccionada con el valor del textbox.

Por ultimo en el evento GotFocus del Datagrid, verifico si el control textbox esta visible, si es asi, le asigno el Foco al control.

Lo unico que faltaria agregarle seria el control de la posicion del textbox al hacer un desplazamiento con la barra de desplazamiento. Pero eso sera otro dia.

El archivo del proyecto lo pueden encontrar en los archivos en el albun "DataGrid Editable".

Saludos y espero que lo disfruten!!!!.

6 comentarios:

Anónimo dijo...

Muy buen Ejemplo :)

ya que asi podemos simular un grid editable , lo cual CF no permite :)

Anónimo dijo...

Muy buen Ejemplo :)

ya que asi podemos simular un grid editable , lo cual CF no permite :)

Anónimo dijo...

Muy buen Ejemplo :)

ya que asi podemos simular un grid editable , lo cual CF no permite :)

Luis dijo...

Hola muchas gracias es exactamente lo que estava buscando, podrias decirme como encontrar el proyecto para echarle un ojo? Porque esto del album "DataGrid editable" no lo encuentro por ninguna parte. Quizas ya no exista que es un post viejo de cualquier manera muchas gracias.

Unknown dijo...

estoy buscando algo así.... no veo el album tampoco

Unknown dijo...

Hola Exel

Lo que sucede es que ese ejemplo ya no esta en la web, debes guiarte por las instrucciones del post para lograrlo.

Saludos,