简体   繁体   中英

DataGrid sample in WPF using visual studio 2012

I have following XAML code:

<Window x:Class="simpledatagrid.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="IDDATA" Height="350" Width="525">
    <Grid>
        <DataGrid  Name="dgsample" BorderBrush="Black" BorderThickness="2" AutoGenerateColumns="True" CanUserAddRows="True" CanUserDeleteRows="True"  Margin="200,10,10,75"/>

        <Label  Content="ID :" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Height="26" Width="27"/>
        <Label  Content="Name :" HorizontalAlignment="Left" Margin="10,60,0,0" VerticalAlignment="Top" Height="26" Width="48"/>
        <Label  Content="Salary :" HorizontalAlignment="Left" Margin="10,110,0,0" VerticalAlignment="Top" Height="26" Width="47"/>

        <TextBox Name="tb1" HorizontalAlignment="Left" Height="20" Margin="60,10,0,0" TextWrapping="NoWrap" Text="" VerticalAlignment="Top" Width="100" />
        <TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="" VerticalAlignment="Top" Width="100"/>
        <TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="" VerticalAlignment="Top" Width="100"/>

        <Button Content="Get" HorizontalAlignment="Left" Margin="10,190,0,0" VerticalAlignment="Top" Width="75" Click="Get_Click" />
        <Button Content="Add" HorizontalAlignment="Left" Margin="10,230,0,0" VerticalAlignment="Top" Width="75" Click="Add_Click" />
        <Button Content="Delete" HorizontalAlignment="Left" Margin="10,270,0,0" VerticalAlignment="Top" Width="75" Click="Delete_Click" />
    </Grid>
</Window>

This is.cs code

public partial class MainWindow : Window
{
    ObservableCollection<User> Users = new ObservableCollection<User>();
    public MainWindow()
    {
        InitializeComponent();

        Users.Add(new User() { Id = 101, Name = "Allen", Salary = 10 });
        Users.Add(new User() { Id = 102, Name = "king", Salary = 20 });
        Users.Add(new User() { Id = 103, Name = "scot", Salary = 30 });
        Users.Add(new User() { Id = 104, Name = "havy", Salary = 40 });
        Users.Add(new User() { Id = 105, Name = "xen", Salary = 50 });
        Users.Add(new User() { Id = 106, Name = "len", Salary = 60 });

        dgsample.ItemsSource = Users;
   }

    private void Get_Click(object sender, RoutedEventArgs e)
    {            
        {

            User currentUser = Users.Single(select => select.Id == int.Parse(this.tb1.Text));
            this.tb2.Text = currentUser.Name;
            this.tb3.Text = currentUser.Salary.ToString();

        }
     }

    private void Add_Click(object sender, RoutedEventArgs e)
    {
        Users.Add(new User() { Id = int.Parse(tb1.Text), Name = tb2.Text, Salary = int.Parse(tb3.Text) });
    }

    private void Delete_Click(object sender, RoutedEventArgs e)
    {
        Users.RemoveAt(dgsample.SelectedIndex);                       
    }
}

This code is working,now i need is if i enter wrong ID which is not in the DatGrid it should show in the MessageBox as invalid and also if i enter the ID in the TextBox and click on the delete button it should get delete..please help me with the code I'm new to WPF

Change delete to be more specific by not use indexing to do deletes, rather use actual objects. Also try to plan on any error even a developer mistake, by always checking for null situations.

private void Delete_Click(object sender, RoutedEventArgs e)
{

    if (dgsample.SelectedItem != null)
    {
        var usr = dgsample.SelectedItem as User;

        if (usr != null)
        {
            var deleteMe = Users.FirstOrDefault(us => us.Id == usr.Id);
            if (deleteMe != null)
            {
                Users.Remove(deleteMe);
            }
            else
            {
                MessageBox.Show(string.Format("User with Id {0} not found to delete", deleteMe.Id);
            }
        }
        else
        {
            MessageBox.Show("Unknown type in datagrid")
        }
    }
    else
    {
        MessageBox.Show("No user selected to delete");
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM