none
Recuperar un elemento de la fila seleccionada de un DataGrid RRS feed

  • Pregunta

  • Hola ... tengo la siguiente consulta: Tengo un DataGrid cargado de datos, lo que no consigo hacer es que cuando seleccione la fila del DataGrid y pulse un boton (Eliminar en este caso) recupere el id del registro que conforma la linea, teniendo este id ya puedo manipular mis datos de esa linea para cualquier proposito.......... espero una pronta respuesta porfavor...... aqui les dejo el codigo que uso .....soy nuevo en esto disculpen las molestias.....Muchas Gracias!!
    /////////codigo xaml /////////////////
    <Window x:Class="Administracion.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
                <TabControl Height="289" Name="tabControl1" Width="606">
                    <TabItem Header="tabItem1" Name="tabItem1">
                        <Grid>
                            <DataGrid AutoGenerateColumns="False" Height="198" HorizontalAlignment="Left" Margin="28,22,0,0" Name="dgLista" VerticalAlignment="Top" Width="425" ItemsSource="{Binding Table}">
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="Id" Binding="{Binding id}"/>
                                    <DataGridTextColumn Header="Nombre" Binding="{Binding nombre}"/>
     <DataGridTextColumn Header="Apellido" Binding="{Binding ap}"/>
                                </DataGrid.Columns>
                            </DataGrid>
                            <Button Content="Modificar" Height="23" HorizontalAlignment="Left" Margin="469,61,0,0" Name="btnEliminar" VerticalAlignment="Top" Width="108" Click="Eliminar" />
                            <Button Content="Eliminar" Height="22" HorizontalAlignment="Left" Margin="469,114,0,0" Name="btnModificar" VerticalAlignment="Top" Width="108" />
                        </Grid>
                    </TabItem>
                </TabControl>
            </Border>
        </Grid>
    </Window>
    ///////////// codigo C# /////////////
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using MySql.Data;
    using MySql.Data.MySqlClient;
    namespace Administracion
    {
        /// <summary>
        /// Lógica de interacción para MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
            public void Lista() {
                MySqlConnection conexion = new MySqlConnection("Server=localhost;Database=DBprueba;Uid=root;Pwd= ;Port=3306");
                conexion.Open();
                MySqlDataAdapter sql=new MySqlDataAdapter("select * from usuario",conexion);
                DataSet datos = new DataSet();
                sql.Fill(datos);
                dgLista.ItemsSource = datos.Tables[0].DefaultView;
                conexion.Close();
            
            }
     private Windows_Loaded(object sender, RoutedEventArgs e){
     Lista();
     }
           
            private void Eliminar(object sender, RoutedEventArgs e)
            {
               //esta es la funcion cuando oprimo el boton eliminar 
     //quiero recuperar en una varible el Id del registro de la fila seleccionada
       }
        }
    }

    jueves, 18 de agosto de 2011 20:56

Todas las respuestas

  • Hola alvarocc

    Prueba con esto:

     

    //Se obtiene la fila seleccionada
    DataRowView row = (DataRowView)dg.SelectedItems[0];
    
    //Se obtiene de la columna "Id" el Id de la fila seleccionada
    int id = row["Id"];
    

    Saludos

    PD: Si estuvieras usando una clase para cargar tu DataGrid podrías hacer algo como lo que se menciona aqui: http://stackoverflow.com/questions/4843578/how-to-read-the-value-in-the-first-cell-in-a-selected-row-of-a-datagrid


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog

    • Propuesto como respuesta Antonio Lobo jueves, 25 de agosto de 2011 14:43
    jueves, 18 de agosto de 2011 21:10
  • Hola Antonio gracias por responder, si funciono tu ejemplo ..... ahora si no es mucha molestia, en el caso de que seleccione mas de un registro como recuperaria los id's de los seleccionados en el mismo ejemplo ...... Gracias por adelantado 

    viernes, 19 de agosto de 2011 14:09
  • Hola alvaro

    Sería algo como:

    //Se recorre la colección de lineas Seleccionadas
    foreach( Object linea in dg.SelectedItems)
    {
      //Se crea una variable del tipo DataRowView para manejar los datos de las lineas
      DataRowView row = (DataRowView)linea;
      
      //Se obtiene de la columna "Id" el Id de la fila seleccionada
      int id = row["Id"]
    }
    

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    sábado, 20 de agosto de 2011 0:31