none
Pasar Datos de un DataGrid a TextBox en WPF C# 2015 RRS feed

  • Pregunta

  • hola soy nuevo en esto de C# y no se como pasar los datos de un Item de una datagrid a textbox para hacer modificacion o editar el registro.. he probado varios códigos que busque por la red y nada que funcionan en vs2015 con WPF.. en este no existen pa propiedad currentRow. para poder pasar los datos voy a anexar el código a ver si me ayudan

    xaml frmUsuarios

    <Window  x:Class="csHM2.frmUsuarios"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:csHM2"
            xmlns:themes="clr-namespace:WPF.Themes;assembly=WPF.Themes"
       
            
            mc:Ignorable="d"
            
        
        Title="Configuración de Usuarios" Height="286" Width="574" ResizeMode="NoResize" WindowStartupLocation="CenterScreen" KeyDown="Window_KeyDown" Topmost="True" WindowStyle="ToolWindow">
        <Grid>
            <TabControl x:Name="tabControl" HorizontalAlignment="Left" Width="571" Height="264.125" VerticalAlignment="Top">
                <TabItem Header="Listado" FontSize="14.667">
                    <Grid HorizontalAlignment="Left" Width="568" Height="236.165" Margin="0,0,-3,0" VerticalAlignment="Top">
                        <Button x:Name="cmdNuevoUser" Content="Nuevo" HorizontalAlignment="Left" Margin="19,204,0,0" Width="70" Click="cmdNuevoUser_Click" Height="22" VerticalAlignment="Top" FontSize="14.667"/>
                        <Button x:Name="cmdSaliru" Content="Salir" HorizontalAlignment="Left" Width="71" Margin="106,204,0,0" Click="cmdSaliru_Click" Height="22" VerticalAlignment="Top" FontSize="14.667"/>
                        <DataGrid x:Name="dtgUsuario" Margin="18.829,95.04,26.692,0" Height="92.989" VerticalAlignment="Top" FontSize="14.667" IsSynchronizedWithCurrentItem="True" SelectionMode="Single"/>
                        <TextBlock x:Name="textBlock2_Copy" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="Black" FontWeight="Bold" Text="Listado de Usuarios" Margin="36.829,0,0,0" Height="26.96" FontSize="21.333">
                            <TextBlock.Background>
                                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                    <GradientStop Color="#FF163D53" Offset="0"/>
                                    <GradientStop Color="#FFC4DEEE" Offset="1"/>
                                </LinearGradientBrush>
                            </TextBlock.Background></TextBlock>
                        <Image x:Name="image2_Copy" HorizontalAlignment="Left" Height="26.96" VerticalAlignment="Top" Width="31.829" Source="img/user3.png" Margin="5,2,0,0"/>
                        <TextBox x:Name="textBox" Height="23" Margin="158,41.04,152,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" FontSize="14.667"/>
                        <RadioButton x:Name="radioButton" Content="RadioButton" HorizontalAlignment="Left" Margin="116,70.04,0,0" VerticalAlignment="Top" FontSize="14.667"/>
                        <RadioButton x:Name="radioButton1" Content="RadioButton" Margin="243,70.04,240.09,0" VerticalAlignment="Top" d:LayoutOverrides="Width" FontSize="14.667"/>
                        <RadioButton x:Name="radioButton2" Content="RadioButton" HorizontalAlignment="Right" Margin="0,70.04,112.09,0" VerticalAlignment="Top" FontSize="14.667"/>
                        <TextBox x:Name="nRegs" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="27" Margin="10,32,0,0"/>
                        <TextBox x:Name="txtIdUsuario" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="24" Margin="42,32,0,0"/>
                    </Grid>
                </TabItem>
                <TabItem Header="Ficha" FontSize="14.667">
                    <Grid>
                        <Button x:Name="cmdCerrar" Content="Cerrar" Margin="0,105,61,0" VerticalAlignment="Top" Click="cmdCerrar_Click" HorizontalAlignment="Right" Width="75"/>
                        <TextBox x:Name="txtNombre" HorizontalAlignment="Left" Height="23" Margin="173,62,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"/>
                        <Label x:Name="lblNombre" Content="Nombre:" HorizontalAlignment="Left" Margin="51,62,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.57,-0.903" FontWeight="Bold" FontSize="16"/>
                        <TextBox x:Name="txtApellido" HorizontalAlignment="Left" Height="23" Margin="173,93,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225" TextChanged="txtApellido_TextChanged"/>
                        <Label x:Name="lblApellido" Content="Apellido:" HorizontalAlignment="Left" Margin="51,93,0,108.618" RenderTransformOrigin="0.57,-0.903" FontWeight="Bold" FontSize="16" d:LayoutOverrides="VerticalAlignment"/>
                        <TextBox x:Name="txtUsuario" HorizontalAlignment="Left" Height="23" Margin="173,124,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225" TextChanged="txtUsuario_TextChanged"/>
                        <Label x:Name="lblUsuario" Content="Usuario:" HorizontalAlignment="Left" Margin="54,124,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.57,-0.903" FontWeight="Bold" FontSize="16"/>
                        <PasswordBox x:Name="txtClave" HorizontalAlignment="Left" Height="23" Margin="173,0,0,54.04" VerticalAlignment="Bottom" Width="225"/>
                        <Label x:Name="lblClave" Content="Clave:" HorizontalAlignment="Left" Margin="54,0,0,45.737" VerticalAlignment="Bottom" RenderTransformOrigin="0.565,-0.754" FontWeight="Bold" FontSize="16"/>
                        <Button x:Name="cmdGuardar" Content="Guardar" VerticalAlignment="Top" Margin="0,62,61,0" Click="cmdGuardar_Click" HorizontalAlignment="Right" Width="75"/>
                        <TextBlock x:Name="textBlock3" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="Black" FontWeight="Bold" Text="Registro de Usuario" Margin="36.829,0,0,0" Height="26.96" FontSize="21.333">
                   <TextBlock.Background>
    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
     <GradientStop Color="#FF163D53" Offset="0"/>
     <GradientStop Color="#FFC4DEEE" Offset="1"/>
                                </LinearGradientBrush>
                            </TextBlock.Background></TextBlock>
      <Image x:Name="image3" HorizontalAlignment="Left" Height="26.96" VerticalAlignment="Top" Width="31.829" Source="img/user3.png" Margin="5,2,0,0"/>
                    </Grid>
                </TabItem>
            </TabControl>
    
    
    
        </Grid>
    </Window>

    ahora el codigo C#

    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.Shapes;
    using System.Data;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using WPF.Themes;
    using cslibSQL;
    
    
    namespace csHM2
    {
    
        public class Person
        {
            public string Name { get; set; }
            public string Surname { get; set; }
        }
    
        /// <summary>
        /// Interaction logic for frmUsuarios.xaml
        /// </summary>
        public partial class frmUsuarios : Window
        {
    
            
    
            // string sConexion = "Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=historias;Data Source=SOPORTE2\\SQLEXPRESS";
            string MiSQL = "";
            public frmUsuarios()
            {
                InitializeComponent();
                cargarDataGrid();
            }
    
            private void cargarDataGrid()
            {
                int p1;
    
                string tabla = "dbo.Usuario";
                try
                {
                    //Creamos la cadena SQL
                    MiSQL = "SELECT * FROM " + tabla;
                    //Creamos el Dataset donde guardaremos los datos recuperados
                    DataSet dts = new DataSet();
                    //Realizamos Conexion
                    SqlConnection cn = new SqlConnection("Data Source=SOPORTE4\\SQLEXPRESS;Initial Catalog=historias;Persist Security Info=True;User ID=sa;Password=123456");
    
                    //Instanciamos el adpatador que recuperará los datos
                    SqlDataAdapter ad = new SqlDataAdapter(MiSQL, cn);
                    //Abrimos la conexión para poder lanzar la consulta 
                    cn.Open();
                    //Lanzamos la consulta e indiqcamos el Dataset que recogerá los datos recuperados
                    ad.Fill(dts, tabla);
                    //Cerramos la conexión
                    cn.Close();
                    //Liberamos el objeto de la memoria
                    cn.Dispose();
                    //Asignamos los registros recuperados y los campos que tiene la tabla
                    nRegs.Text = dts.Tables[tabla].Rows.Count.ToString();
                    p1 = Convert.ToInt32(nRegs.Text);
                    txtIdUsuario.Text = generateID(p1).ToString();
                    // nCols.Text = dts.Tables[tabla].Columns.Count.ToString();
                    // eR.Text = dts.Tables[tabla].Rows.Count.ToString();
                    //Asignamos los datos recuperados al DataGrid 
                    dtgUsuario.ItemsSource = dts.Tables[tabla].DefaultView;
    
    
                    //Lo refrescamos para mostralos en la ventana
                    dtgUsuario.Items.Refresh();
    
    
                }
                catch (SqlException ex)
                {
    
                    MessageBox.Show(ex.Message);
    
                }
            }
            private int generateID(int nr)
            {
                int nr1 = 1;
                // txtIdUsuario.Text = nr.ToString() + " + " + nr1.ToString();
                return nr + nr1;
    
    
            }
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                //themes.ItemsSource = ThemeManager.GetThemes();
    
                //  comboBox.ItemsSource = SouthPark;
                //  listBox.ItemsSource = SouthPark;
            }
    
    
    
            private void Window_KeyDown(object sender, KeyEventArgs e)
            {
    
    
                if (e.Key == Key.Escape)
                    Close();
            }
    
            private void cmdNuevoUser_Click(object sender, RoutedEventArgs e)
            {
                // gNuevoUsuario.Visibility = Visibility.Visible;
    
                this.txtNombre.Text = this.dtgUsuario.SelectedItem.Cell(0).Text;
            }
    
            private void cmdCerrar_Click(object sender, RoutedEventArgs e)
            {
             //   gNuevoUsuario.Visibility = Visibility.Hidden;
    
            }
    
            private void cmdSaliru_Click(object sender, RoutedEventArgs e)
            {
                Close();
            }
    
    
            private void cmdGuardar_Click(object sender, RoutedEventArgs e)
            {
    
                if ((txtNombre.Text == "") ||
                    (txtApellido.Text == "") ||
                    (txtNombre.Text == "") ||
                    (txtClave.Password == ""))
                {
                    MessageBox.Show("Debe Llenar Todos los Campos");
                }
                else
                {
                // MessageBox.Show("Todo Bien se Puede Guardar");
    
                    UsrEntity usuario1 = new UsrEntity();
    
                    usuario1.Id = Convert.ToInt32(txtIdUsuario.Text);
                    usuario1.Nombre = txtNombre.Text;
                    usuario1.Apellido = txtApellido.Text;
                    usuario1.Nusuario = txtUsuario.Text;
                    usuario1.Uclave = txtClave.Password;
    
                    usuario1 = LoginService.Insert(usuario1);
    
                    cargarDataGrid();
    
                    MessageBox.Show(string.Format("Se ha creado el usuario, ID: {0}", usuario1.Id));
                    txtNombre.Clear();
                    txtApellido.Clear();
                 // txtIdUsuario.Clear();
                    txtUsuario.Clear();
                    txtClave.Clear();
    
                    
    
    
                }
            }
           
        }
    }

    yo quiero que al presionar el botón Nuevo me pase los datos del item seleccionado en el datagrid a los textbox de la proxima pestaña.. coloque este codigo pero no sirve

    private void cmdNuevoUser_Click(object sender, RoutedEventArgs e)
            {
                // gNuevoUsuario.Visibility = Visibility.Visible;
    
                this.txtNombre.Text = this.dtgUsuario.SelectedItem.Cell(0).Text;
            }

    no se que sucede. todos las formas de hacerlo segun internet no funcionan en VS2015 con WPF y C# 

    ayuda auxilio

    • Cambiado Karen Malagón martes, 27 de octubre de 2015 21:48 WPF issue
    martes, 27 de octubre de 2015 15:32

Todas las respuestas