Click here to Skip to main content
15,890,724 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I have 3 TextBoxes in my window.When i enter wrong charecters into the TextBoxes ,It should show error by using validations.I'm doing this in WPF, please help me with the code

This is my XAML code

<Window x:Class="DataGrid_DataBinding.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 AutoGeneratingColumn="DG1_AutoGeneratingColumn" Name="dgsample" BorderBrush="Black" BorderThickness="2" AutoGenerateColumns="True" CanUserAddRows="True" CanUserDeleteRows="True" CanUserSortColumns="False"  Margin="200,10,10,75">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Id" Visibility="Hidden" Binding="{Binding Path=Id}"  />
            <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"  />
            <DataGridTextColumn Header="Salary" Binding="{Binding Path=Salary}"  />
        </DataGrid.Columns>
    </DataGrid>

    <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="{Binding SelectedItem.Id, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="100" />

    <TextBox Name="tb2" HorizontalAlignment="Left" Height="20" Margin="60,60,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Name, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True}" VerticalAlignment="Top" Width="100"/>
    <TextBox Name="tb3" HorizontalAlignment="Left" Height="20" Margin="60,110,0,0" TextWrapping="NoWrap" Text="{Binding SelectedItem.Salary, ElementName=dgsample,ValidatesOnNotifyDataErrors=True,ValidatesOnExceptions=True,NotifyOnValidationError=True}" 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>


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 = "scott", Salary = 20 });
        Users.Add(new User() { Id = 103, Name = "mickey", Salary = 30 });
        Users.Add(new User() { Id = 104, Name = "micheal", Salary = 40 });
        Users.Add(new User() { Id = 105, Name = "fletch", Salary = 50 });
        Users.Add(new User() { Id = 106, Name = "etcher", Salary = 60 });

        dgsample.ItemsSource = Users;

    }
    private void DG1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        switch (e.Column.Header.ToString())
        {
            case "Id":

                e.Column.Visibility = Visibility.Hidden;
                break;
            case "Name":
                e.Column.Visibility = Visibility.Hidden;
                break;
            case "Salary":
                e.Column.Visibility = Visibility.Hidden;
                break;
        }
    }

    private void Get_Click(object sender, RoutedEventArgs e)
    {


        int index;
        if (int.TryParse(this.tb1.Text, out index))
        {
            User currentUser = Users.FirstOrDefault(Select => Select.Id == int.Parse(tb1.Text));
            if (currentUser != null)
            {
                this.tb2.Text = currentUser.Name;
                this.tb3.Text = currentUser.Salary.ToString();
            }
            else
                MessageBox.Show("User with the provided ID does not Exist", "Error");
        }
        else
            MessageBox.Show("ID entered is not valid number", "Error");





    }



    private void Add_Click(object sender, RoutedEventArgs e)
    {


        if (!tb1.Text.Equals(""))
        {
            var adduser = Users.Where(User => User.Id == int.Parse(tb1.Text));

            if (!adduser.Any())
            {
                Users.Add(new User() { Id = int.Parse(tb1.Text), Name = tb2.Text, Salary = int.Parse(tb3.Text) });
            }

            else

                MessageBox.Show("Someone already has that ID.");

        }

    }

    private void Delete_Click(object sender, RoutedEventArgs e)
    {
        int index;
        if (int.TryParse(this.tb1.Text, out index))
        {
            User currentUser = Users.FirstOrDefault(Select => Select.Id == int.Parse(tb1.Text));
            if (currentUser != null)
            {
                Users.Remove(currentUser);
            }
            else
                MessageBox.Show("User with the provided ID does not Exist", "Error");
        }
        else
            MessageBox.Show("ID entered is not valid number", "Error");

    }

}
Posted

1 solution

I find this easyer to do in code behind. Look here[^].
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900