</Window>
using ClassLibrary;
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;namespace DataBindingExam{ /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void btnQuery_Click_1(object sender, RoutedEventArgs e) { int id = Convert.ToInt32(txtID.Text); Product p = StoreDB.GetProductByID(id); grid.DataContext = p; } private void btnUpdate_Click_1(object sender, RoutedEventArgs e) { int categoryID=Convert.ToInt32(txtCategoryID.Text); decimal unitCost = Convert.ToDecimal(txtUnitCost.Text); Product p = new Product() { CategoryID = categoryID, ModelNumber = txtModelNumber.Text, ModelName = txtModelName.Text, ProductImage = txtProductImage.Text, UnitCost = unitCost, Description = txtDescription.Text }; int productID = Convert.ToInt32(txtID.Text); StoreDB.UpdateProductByID(productID, p); } private void btnInsert_Click_1(object sender, RoutedEventArgs e) { int categoryID = Convert.ToInt32(txtCategoryID.Text); decimal unitCost = Convert.ToDecimal(txtUnitCost.Text); Product p = new Product() { CategoryID = categoryID, ModelNumber = txtModelNumber.Text, ModelName = txtModelName.Text, ProductImage = txtProductImage.Text, UnitCost = unitCost, Description = txtDescription.Text }; StoreDB.InsertProduct(p); } private void btnDelete_Click_1(object sender, RoutedEventArgs e) { int productID = Convert.ToInt32(txtID.Text); StoreDB.DeleteProductByID(productID); } private void txtUnitCost_Error_1(object sender, ValidationErrorEventArgs e) { if (e.Action==ValidationErrorEventAction.Added) { MessageBox.Show(e.Error.ErrorContent.ToString()); } } }}using System;
using System.Collections.Generic;using System.Data.SqlClient;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ClassLibrary{ public class StoreDB { public static string connString = Properties.Settings.Default.ConnectionString; public static Product GetProductByID(int id) { Product p = null; SqlConnection con = new SqlConnection(connString); SqlCommand cmd = new SqlCommand("GetProductByID", con); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@ProductID", id); try { con.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { p = new Product() { CategoryID = (int)reader[1], ModelNumber = reader[2].ToString(), ModelName = reader[3].ToString(), ProductImage=reader[4].ToString(), UnitCost = (decimal)reader[5], Description = reader[6].ToString() }; } return p; } catch (Exception) { throw; } finally { con.Close(); } } public static void UpdateProductByID(int ProductID,Product p) { SqlConnection con = new SqlConnection(connString); SqlCommand cmd = new SqlCommand("UpdateProductByID", con); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@ProductID",ProductID); cmd.Parameters.AddWithValue("@CategoryID",p.CategoryID); cmd.Parameters.AddWithValue("@ModelNumber",p.ModelNumber); cmd.Parameters.AddWithValue("@ModelName",p.ModelName); cmd.Parameters.AddWithValue("@ProductImage",p.ProductImage); cmd.Parameters.AddWithValue("@UnitCost",p.UnitCost); cmd.Parameters.AddWithValue("@Description",p.Description); try { con.Open(); cmd.ExecuteNonQuery(); } catch (Exception) { throw; } finally { con.Close(); } } public static void InsertProduct(Product p) { SqlConnection con = new SqlConnection(connString); SqlCommand cmd = new SqlCommand("InsertProduct", con); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@CategoryID", p.CategoryID); cmd.Parameters.AddWithValue("@ModelNumber", p.ModelNumber); cmd.Parameters.AddWithValue("@ModelName", p.ModelName); cmd.Parameters.AddWithValue("@ProductImage", p.ProductImage); cmd.Parameters.AddWithValue("@UnitCost", p.UnitCost); cmd.Parameters.AddWithValue("@Description", p.Description); try { con.Open(); cmd.ExecuteNonQuery(); } catch (Exception) { throw; } finally { con.Close(); } } public static void DeleteProductByID(int id) { SqlConnection con = new SqlConnection(connString); SqlCommand cmd = new SqlCommand("DeleteProductByID", con); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@ProductID", id); try { con.Open(); cmd.ExecuteNonQuery(); } catch (Exception) { throw; } finally { con.Close(); } } }}
namespace ClassLibrary
{ public class Product { public int ProductID { get; set; } public int CategoryID { get; set; } public string ModelNumber { get; set; } public string ModelName { get; set; } public string ProductImage { get; set; } public decimal UnitCost { get; set; } public string Description { get; set; } public Product(int CategoryID = 0, string ModelNumber = "", string ModelName = "", string ProductImage = "", decimal UnitCost=0,string Description="") { this.CategoryID = CategoryID; this.ModelNumber = ModelNumber; this.ModelName = ModelName; this.ProductImage = ProductImage; this.UnitCost = UnitCost; this.Description = Description; } }}
using System;
using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Controls;namespace DataBindingExam{ public class PriceValidationRule:ValidationRule { public decimal Max { get; set; } public decimal Min { get; set; } public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { decimal price = 0; if (decimal.TryParse(value.ToString(), out price)) { if (price > Min && price<Max) { return new ValidationResult(true, null); } else { return new ValidationResult(false, "Illegal,price must between "+Min+"~"+Max); } } else { return new ValidationResult(false, "Can not convert to decimal"); } } }}