Popular

Obten claves web y navega gratis Router keygen para Android

Error 403 Forbidden con phpmyadmin y WAMP Server

Realizar suma, resta y división con javascript

Colocar un CheckBox en un DataGrid con DataTemplete.

Después de unos días de estar alejado de ustedes por tanto trabajo hoy regreso a publicarles y espero que sea más seguido nuestra publicación del día de hoy es porque he visto como muchas personas en la red tienen esté problema ¿Cómo colocar un CheckBox dentro de un datagrid y manipularlo con algún evento?, aqúi les mostrare como poder hacerlos.

Primero que nada vamos a crear nuestro código XAML ya que trabajaremos con WPF y C#. El código XAML para nuestro ejemplo queda de la siguiente manera:

<DataGrid AutoGenerateColumns="False" SelectionMode="Single" Grid.Row="3" Height="133" HorizontalAlignment="Left" Margin="23,49,0,0" x:Name="dtgGradesByTrim" VerticalAlignment="Top" Width="756" CanUserDeleteRows="False" CanUserAddRows="False" ScrollViewer.HorizontalScrollBarVisibility="Auto" >
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="isAndroid" Width="Auto">
                    <DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate x:Name="dtActive">
                            <CheckBox IsChecked="{Binding Path=isandroid, UpdateSourceTrigger=PropertyChanged}" Click="CheckBoxTemplete_Click" HorizontalAlignment="Center"></CheckBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate x:Name="dtActive1">
                            <CheckBox IsChecked="{Binding Path=isandroid, UpdateSourceTrigger=PropertyChanged}" Click="CheckBoxTemplete_Click" HorizontalAlignment="Center"></CheckBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="Telefono" Width="Auto" Binding="{Binding Path=nombretelefono}" IsReadOnly="True"></DataGridTextColumn>
                <DataGridTextColumn Header="Description" Width="Auto" Binding="{Binding Path=description}" IsReadOnly="True"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

Con lo cuál con esté código vamos a tener un datagrid con 3 columnas se preguntran porque ha colocado en el dataTemplate del checkbox un evento click ahí es donde manipularemos el checado del checkbox de nuestro datagrid.


Siguiendo con nuestro ejemplo tendremos que crear el código c# para hacer funcionar nuestro datagrid primero que nada podemos llenar el datagrid con una lista yo usare una estructura si se fijaron use Binding Path="isandroid" ese es el nombre del campo que le enviare al itemsource de mi datagrid. Como crear la estructura la estructura la crearemos así:

Código C#

#region Structure
        struct Datos
        {
            private bool isAndroid;
            private string NombreTelefono;
            private string Description;

            public bool isandroid
            {
                get { return isAndroid; }
                set { isAndroid = value; }
            }

            public string nombretelefono
            {
                get { return NombreTelefono; }
                set { NombreTelefono = value; }
            }

            public string description
            {
                get { return Description; }
                set { Description = value; }
            }
        }
        #endregion

Ya tenemos nuestra estructura creada la hice a manera de ejemplo para llenar el datagrid, ahora llenaremos una lista con está estructura para ahora si dar binding a nuestro dataGrid. Cómo llenamos la lista es así yo lo hice en el constructor de mi windows de la siguiente manera:

#region Llenado de Datos
                Datos obj1 = new Datos();
                obj1.isandroid = true;
                obj1.nombretelefono = "Motorola RARZ MAXX";
                obj1.description = "Camara HD 8mgp, procesador dualcore 1.2GHz,";
                Listisactive.Add(obj1);
                obj1.isandroid = false;
                obj1.nombretelefono = "Nokia Lumia 900";
                obj1.description = "Camara 8mgp, Pantalla tactil";
                Listisactive.Add(obj1);
                obj1.isandroid = true;
                obj1.nombretelefono = "Samsung Galaxy S III";
                obj1.description = "Camara 8mgp, Procesador Quad";
                Listisactive.Add(obj1);
                #endregion

            this.dtgGradesByTrim.ItemsSource = Listisactive;

De esta manera terminamos nuestro ejemplo ya nos debería mostrar los datos en el metodo que manipularemos el checkbox es el siguiente:

private void CheckBoxTemplete_Click(object sender, RoutedEventArgs e)
        {

        }
En esté evento podemos manipular el checkbox de nuestro datagrid más para adelante les mostrare como podemos manipular esto. Los resultados del ejercicio son los siguientes:


Comentarios

Entradas populares de este blog

Error 403 Forbidden con phpmyadmin y WAMP Server

Número de filas afectadas por instrucción PL/SQL en Oracle [Utilidades].

Como truncar un número decimal en C# sin redondear.