Quantcast
Channel: Windows Presentation Foundation (WPF) forum
Viewing all articles
Browse latest Browse all 18858

Binding textbox in WPF

$
0
0

Hi,

I'm trying to write and interface to a stock database.

I'm using visual studio 2013 and WPF (c#). I have created a window containing my text boxes. Relating to the data I wish to input into the database. the XAML is:

<Window x:Class="BondedStock.ManageItem"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
       Title="Stock Management System" Height="Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" SizeToContent="WidthAndHeight"><Grid Name="gridItemDetails" ShowGridLines="False" Background="#FF2B2B2B" DataContext="{Binding ElementName=lstItems, Path=SelectedItem}"><Grid.RowDefinitions><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition><RowDefinition Height="Auto"></RowDefinition></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="auto" MinWidth="100"></ColumnDefinition><ColumnDefinition Width="Auto" MinWidth="100"></ColumnDefinition><ColumnDefinition Width="Auto" MinWidth="100"></ColumnDefinition><ColumnDefinition Width="Auto" MinWidth="100"></ColumnDefinition></Grid.ColumnDefinitions><TextBlock Margin="7" Grid.Row="3" Foreground="White">Item Management</TextBlock><TextBlock Margin="7" Grid.Row="4" Foreground="White">Part Number:</TextBlock><TextBox Name="TB_PartNumber" Margin="5" Grid.Column="1" Grid.Row="4" Text="{Binding Path=PartNumber}"></TextBox><TextBlock Margin="7" Grid.Row="5" Foreground="White">Description:</TextBlock><TextBox Name="TB_Description" Margin="5" Grid.Column="1" Grid.Row="5" Text="{Binding Path=Description}"></TextBox><TextBlock Margin="7" Grid.Row="6" Foreground="White">NSC:</TextBlock><TextBox Name="TB_NSC" Margin="5" Grid.Column="1" Grid.Row="6" Text="{Binding Path=NSC}"></TextBox><TextBlock Margin="7" Grid.Row="7" Foreground="White">NC:</TextBlock><TextBox Name="TB_NC" Margin="5" Grid.Column="1" Grid.Row="7" Text="{Binding Path=NC}"></TextBox><TextBlock Margin="7" Grid.Row="8" Foreground="White">NIN:</TextBlock><TextBox Name="TB_NIN" Margin="5" Grid.Column="1" Grid.Row="8" Text="{Binding Path=NIN}"></TextBox><TextBlock Margin="7" Grid.Row="9" Foreground="White">DMC:</TextBlock><TextBox Name="TB_DMC" Margin="5" Grid.Column="1" Grid.Row="9" Text="{Binding Path=DMC}"></TextBox><TextBlock Margin="7" Grid.Row="10" Foreground="White">DofQ:</TextBlock><TextBox Name="TB_DofQ" Margin="5" Grid.Column="1" Grid.Row="10" Text="{Binding Path=DofQ}"></TextBox><TextBlock Margin="7" Grid.Row="11" Foreground="White">Stock Value:</TextBlock><TextBox Name="TB_StockValue" Margin="5" Grid.Column="1" Grid.Row="11" Text="{Binding Path=StockValue}"></TextBox><TextBlock Margin="7" Grid.Row="12" Foreground="White">Location:</TextBlock><TextBox Name="TB_Location" Margin="5" Grid.Column="1" Grid.Row="12" Text="{Binding Path=Location}"></TextBox><TextBlock Margin="7" Grid.Row="13" Foreground="White">Image:</TextBlock><TextBox Name="TB_Image" Margin="5" Grid.Column="1" Grid.Row="13" Text="{Binding Path=Image}"></TextBox><TextBlock Margin="7" Grid.Row="14" Foreground="White">Contract:</TextBlock><TextBox Name="TB_Contract" Margin="5" Grid.Column="1" Grid.Row="14" Text="{Binding Path=ContractNumber}"></TextBox><TextBlock Margin="7" Grid.Row="15" Foreground="White">Equipment:</TextBlock><TextBox Name="TB_Equipment" Margin="5" Grid.Column="1" Grid.Row="15" Text="{Binding Path=MainEquipment}"></TextBox><TextBlock Margin="7" Grid.Row="16" Foreground="White">Qty:</TextBlock><TextBox Name="TB_Qty" Margin="5" Grid.Column="1" Grid.Row="16" Text="{Binding Path=Qty}"></TextBox><Button Name="B_AddItem" Width="74" Height="25" Grid.Column="2" Grid.Row="8" Click="B_AddItem_Click">Add Item</Button></Grid></Window>


I have created a data object to handle the data:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BondedStock
{
    public class Item
    {
        private string partNumber;
        public string PartNumber
        {
            get { return partNumber; }
            set { partNumber = value; }
        }

        private string desciption;
        public string Description
        {
            get { return desciption; }
            set { desciption = value; }
        }

        private int nsc;
        public int NSC
        {
            get { return nsc; }
            set { nsc = value; }
        }

        private int nc;
        public int NC
        {
            get { return nc; }
            set { nc = value; }
        }

        private int nin;
        public int NIN
        {
            get { return nin; }
            set { nin = value; }
        }

        private string dmc;
        public string DMC
        {
            get { return dmc; }
            set { dmc = value; }
        }

        private string dofq;
        public string DofQ
        {
            get { return dofq; }
            set { dofq = value; }
        }

        private decimal stockValue;
        public decimal StockValue
        {
            get { return stockValue; }
            set { stockValue = value; }
        }

        private string location;
        public string Location
        {
            get { return location; }
            set { location = value; }
        }

        private string image;
        public string Image
        {
            get { return image; }
            set { image = value; }
        }

        private int contractNumber;
        public int ContractNumber
        {
            get { return contractNumber; }
            set { contractNumber = value; }
        }

        private string mainEquipment;
        public string MainEquipment
        {

            get { return mainEquipment; }
            set { mainEquipment = value; }
        }

        private int qty;
        public int Qty
        {
            get { return qty; }
            set { qty = value; }
        }

        public Item(string partNumber, string description, int nsc, int nc, int nin, string dmc, string dofq, decimal stockValue, string location, string image, int contractNumber, string mainEquipment, int qty)
        {

            PartNumber = partNumber;
            Description = desciption;
            NSC = nsc;
            NC = nc;
            NIN = nin;
            DMC = dmc;
            DofQ = dofq;
            StockValue = stockValue;
            Location = location;
            Image = image;
            ContractNumber = contractNumber;
            MainEquipment = mainEquipment;
            Qty = qty;
        }

    }
}

I have a data access class to handle database communications:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Data.SqlClient;

namespace BondedStock
{
    public class StockDB
    {
        // Get connection string
        private string connectionString = Properties.Settings.Default.ConnectionString;

        public void InsertItem(Item item)
        {        

            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand("InsertItem", con);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@Part_Number", item.PartNumber);
            cmd.Parameters.AddWithValue("@Description", item.Description);
            cmd.Parameters.AddWithValue("@NSC", item.NSC);
            cmd.Parameters.AddWithValue("@NC", item.NSC);
            cmd.Parameters.AddWithValue("@NIN", item.NIN);
            cmd.Parameters.AddWithValue("@DMC", item.DMC);
            cmd.Parameters.AddWithValue("@DofQ", item.DofQ);
            cmd.Parameters.AddWithValue("@Stock_Value", item.StockValue);
            cmd.Parameters.AddWithValue("@Location", item.Location);
            cmd.Parameters.AddWithValue("@Image", item.Image);
            cmd.Parameters.AddWithValue("@Contract", item.ContractNumber);
            cmd.Parameters.AddWithValue("@Equipment", item.MainEquipment);
            cmd.Parameters.AddWithValue("@Qty", item.Qty);

            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
            }
            finally
            {
                con.Close();
            }
        }

    }
}

The c# code behind the XAML is:

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.Windows.Navigation;

namespace BondedStock
{
    /// <summary>
    /// Interaction logic for ManageItem.xaml
    /// </summary>
    public partial class ManageItem : Window
    {
        public ManageItem()
        {
            InitializeComponent();
        }

        //private List<Item> items;

        private void B_AddItem_Click(object sender, RoutedEventArgs e)
        {

            Item item = (Item)gridItemDetails.DataContext;

            try
            {

                App.StockDB.InsertItem(item);
            }
            catch
            {
                MessageBox.Show("Error contacting the database.");
            }


        }
    }
}

The problem I have is the line ' Item item = (Item)gridItemDetails.DataContext;' The line does not populate the data object item. The debugger also indicates that gridItemDetails also does not hold the data.

Can anyone help me out. I appear to be stumped!!! I'm obviously making some stupid mistake here. I have used this design before with no problem!

Thanks,

Steve


Viewing all articles
Browse latest Browse all 18858

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>