none
como hacer referencia a una celda de un datagrid en wpf RRS feed

  • Pregunta

  • hola soy nuevo en wpf y me gustaría saber como enlazar el valor de una celda de un datagrid a un textbox.
    tengo 4 textbox y un botón 

    textbox1 = id
    textbox2 = nombre
    textbox3 = telefono
    textbox4 = correo electronico 
    button1 = ok 
    datagrid = agendaDatagrid

    lo que busco que haga es, que al introducir el numero de id 
    y oprimir el botón ponga los datos en los textbox

    ESPERO QUE ME PUEDAN AYUDAR 


    ESTE ES EL CODIGO CS
    el error que me marca es en Rows y Cells al hacer la referencia 

    me dice que no contiene una definicon y no se encontró ningún método de extensión que acepte un primer argumento
    System.Windows.Controls.Datagrid (falta una directiva de uso o una referencia de ensamblado )

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    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 System.Windows.Resources;

    namespace prueva_de_base_de_datos
    {
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                prueva_de_base_de_datos.pruevaDataSet pruevaDataSet = ((prueva_de_base_de_datos.pruevaDataSet)(this.FindResource("pruevaDataSet")));

                prueva_de_base_de_datos.pruevaDataSetTableAdapters.agendaTableAdapter pruevaDataSetagendaTableAdapter =
    new prueva_de_base_de_datos.pruevaDataSetTableAdapters.agendaTableAdapter();
             
                pruevaDataSetagendaTableAdapter.Fill(pruevaDataSet.agenda);
                System.Windows.Data.CollectionViewSource agendaViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("agendaViewSource")));

                agendaViewSource.View.MoveCurrentToFirst();
            }
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                int a = 0;
                a = Convert.ToInt32(id.Text);
               nombre.Text =  agendaDataGrid.Rows[a+1].Cells[1].Value;
               telefono.Text = agendaDataGrid.Rows[a + 1].Cells[2].Value;
               correo_electronico.Text = agendaDataGrid.Rows[a + 1].Cells[3].Value;

            }
        }
    }

    miércoles, 4 de junio de 2014 23:11

Todas las respuestas

  • Hola.

    Espero no llegar muy tarde, lo primero comentarte que WPF es diferente a winform y lo que se hace muy facil en winform en WPF es mucho mas complicado, el error te sale porque en WPF no esiste .Rows ni .Cells. Bueno para abordar tu problema de una forma rapida y sencilla mi primer consejo es que cres una clase como esta.

    class NegocioContactosClientes
        {
            public int Id { set; get; }
            public string Nombre { set; get; }
            public string Apellidos { set; get; }
            public string Telefono { set; get; }
            public string Extension { set; get; }
            public string Email { set; get; }
    
        }

    quita lo que sobre o añade si necesitas otros.

    En tu evento Button_Click elimina todo y ponlo de esta manera

     private void Button_Click(object sender, RoutedEventArgs e)
            {
     NegocioContactoClientes clienteseleccionado = (NegocioContactoClientes)agendaDataGrid.SelectedItem;
    nombre.Text=clienteseleccionado.Nombre;
    telefono.Text=clienteseleccionado.Telefono;
    correo_electronico.Text=clienteseleccionado.Email;
            }

    Es posible que

    agendaDataGrid.SelectedItem

    contenga null cuando pulse el boton WPF es muy rarito y podria ser que al pulsar el boton se deseleccione el item, para ello deberias usar el evento SelectionChanged para hacer persistir el item seleccionado, si te ocurre lo comentas y vemos como hacerlo.

    Si vas a seguir programando en WPF ves mirando usar entidades que es lo primero que hemos echo, objetos que contienen propiedades donde se cargan los datos para asi poder usar uno de los elementos mas potentes de WPF el {Binding}.

    Un saludo


    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.

    viernes, 13 de junio de 2014 15:38