none
Seleccionar solo un Radiobutton de entre varias filas/renglones de un Datagrid C# WPF RRS feed

  • Pregunta

  • Que tal amigos, vengo a pedirles ayuda y apoyo con un problema, les explico:

    Estoy programando en C# una aplicación WPF donde tengo un Datagrid en el cual muestro datos con una consulta usando LinQ y SQL Server, estos datos los obtengo y guardo en un ObservableCollection<> y este se lo asigno al Datagrid mediante el ItemsSource, hasta aquí todo bien, mi Datagrid muestra los datos según mi consulta.

    En el Datagrid que tengo, las columnas no son generadas automáticamente, sino que yo las asigno y hago un binding con los campos y datos que obtengo de la base de datos pero además, agrego una columna con un Radiobutton, utilizando DataGridTemplateColumn, CellTemplate y DataTemplate para agregar esta columna con un RadioButton para cada una de las filas que genere mi consulta cuando lleno el Datagrid, ¿me explico?, entonces el problema que tengo, es que cuando se llena mi Datagrid teniendo 3 filas por ejemplo, existen 3 Radiobuttons, pero necesito que solo pueda elegir un solo Radiobutton de los 3 que están,  pero esto no ocurre, cuando selecciono uno y cambio la selección a otro, el anterior se mantiene seleccionado lo que me genera una selección multiple, puedo tener todos los RadioButtons seleccionados cuando no debería, lo cual es un problema que aun no puedo solucionar, si de mi consulta obtengo 4 registros mi Datagrid se llena con 4 filas y un RadioButton para cada fila, pero necesito solo poder seleccionar un Radiobutton.

    ¿Puede alguien ayudarme? ¿Se les ocurre alguna idea de como hacer esto?

    De antemano muchas gracias a todos, espero pueda alguien del foro ayudarme, gracias, saludos.

    Les anexo parte de mi codigo, gracias.

    XML

    <DataGrid x:Name="dgPopCotiz" Margin="16,253,18,10" AutoGenerateColumns="False" CanUserAddRows="False" >
    	<DataGrid.Columns>
            	<DataGridTextColumn Header="Proveedor" Binding="{Binding dgproveed}"/>
                    <DataGridTextColumn Header="Producto" Binding="{Binding dgproduc}"/>
                    <DataGridTextColumn Header="Precio" Binding="{Binding dgprecio}"/>
                    <DataGridTextColumn Header="F.Registro" Binding="{Binding dgfechReg}"/>
                    <DataGridTemplateColumn Header="Asignar">
                    	<DataGridTemplateColumn.CellTemplate>
                            	<DataTemplate>
                                    	<RadioButton GroupName="{Binding indexIdProv}" isChecked="{Binding checkRdb}"/>
                                    </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                    </DataGridTemplateColumn>
    	</DataGrid.Columns>
    </DataGrid>

    Método para llenar el Datagrid:

    CS

    ObservableCollection<DataGridPopup> collDgPopp = new ObservableCollection<DataGridPopup>();

    private void fillDatagridPopContrato() { collDgPopp.Clear(); var fillDgCot = from cpv in conex.ContratoProv from cdtll in conex.ContratoDetalle from prvee in conex.Proveedor from pdct in conex.Producto where cdtll.idProducto == idProdSeleccCotiz && prvee.idContrato == cpv.idContrato && cpv.idContrato == cdtll.idContrato && pdct.idProducto == idProdSeleccCotiz select new { cdtll.Precio, prvee.Nombre, nomProd = pdct.Nombre, cpv.fechaRealizacion, cpv.observaciones, prvee.idProveedor }; foreach(var wq in fillDgCot){ idProveToCotiza = wq.idProveedor; collDgPopp.Add(new DataGridPopup { dgproveed = wq.Nombre, dgproduc = wq.nomProd, dgprecio = (float)wq.Precio.Value, dgfechReg = wq.fechaRealizacion.ToString(), indexIdProv = idProveToCotiza, checkRdb=false }); dgPopCotiz.ItemsSource = collDgPopp; } }


    Clase donde guardo datos de la consulta y que utilizo en para el ObservableCollection

    class DataGridPopup {
        public string dgproveed { get; set; }
        public string dgproduc { get; set; }
        public float dgprecio { get; set; }
        public string dgfechReg { get; set; }
        public int indexIdProv { get; set; }
        public bool checkRdb { get; set; }
    }

    Muchas gracias!!


    Nota: Utilizo Visual Studio 2012.


    jueves, 13 de diciembre de 2012 9:47

Todas las respuestas

  • Bueno pues, el problema sobre que podía seleccionar todos los RadioButtons que se generaban con las filas resultado de mi consulta, ya lo pude solucionar, ahora ya puedo seleccionar solo un RadioButton de entre las filas que arroja mi consulta en el Datagrid, el problema era que tenia un error en el GroupName.

    Raro que nadie respondiera, o tuviese alguna idea de mi falla, aun así gracias a quienes se dieron tiempo de leer mi post. Saludos a todos.

    viernes, 14 de diciembre de 2012 3:19