private void EditProductButton_Click(object sender, EventArgs e) { //get the key of the current product in the data grid view int rowNum = productDataGridView.CurrentCell.RowIndex; string prodID = productDataGridView["dataGridViewTextBoxColumn1", rowNum].Value.ToString(); //create a current product object Product existingProduct; using (ProductsDataContext dataContext = new ProductsDataContext()) { existingProduct = (from p in dataContext.Products where p.ProductId.ToString() == prodID select p).Single(); } //instantiate the addeditproductsForm AddEditProductsForm addEditForm = new AddEditProductsForm(); addEditForm.EditMode = true; //editing products addEditForm.existingProduct = existingProduct; DialogResult result = addEditForm.ShowDialog(); // display second form modal if (result == DialogResult.OK || result == DialogResult.Retry) // successful update or concurrency exception { ReloadGridView(); } }
private void ApplyButton_Click(object sender, EventArgs e) { if (!EditMode) //if adding a product { //validate user input before sending to database if (ValidateProduct.IsNotEmpty(prodNameTextBox, "Product Name") && ValidateProduct.IsValidString(prodNameTextBox, "Product Name") && ValidateProduct.IsValidInteger(productIdTextBox, "Product ID") && ValidateProduct.IsNotEmpty(productIdTextBox, "Product ID") && IsExistingID(productIdTextBox)) { Product newProduct = new Product //create a new product from user input { ProductId = int.Parse(productIdTextBox.Text), ProdName = prodNameTextBox.Text }; using (ProductsDataContext dataContext = new ProductsDataContext()) { //insert through data context from the main form dataContext.Products.InsertOnSubmit(newProduct); dataContext.SubmitChanges(); //submit to the database } DialogResult = DialogResult.OK; } } else //if editing products { //validate data input if (ValidateProduct.IsNotEmpty(prodNameTextBox, "Product Name") && ValidateProduct.IsValidString(prodNameTextBox, "Product Name")) { try { using (ProductsDataContext dataContext = new ProductsDataContext()) { //get the product ID from current text box Product product = dataContext.Products.Single(p => p.ProductId.ToString() == productIdTextBox.Text); if (product != null) { product.ProdName = prodNameTextBox.Text; //submit changes dataContext.SubmitChanges(); DialogResult = DialogResult.OK; } } } catch (ChangeConflictException) { MessageBox.Show("Another user changed or deleted the current record", "Concurrency Exception"); DialogResult = DialogResult.Retry; } catch (Exception excp) { MessageBox.Show(excp.Message, excp.GetType().ToString()); } } } }
private void ProductsMainForm_Load(object sender, EventArgs e) { using (ProductsDataContext dataContext = new ProductsDataContext()) { //this loads the entire table productDataGridView.DataSource = dataContext.Products; //productDataGridView.DataSource = from prod in dataContext.Products // select prod; } productDataGridView.BorderStyle = BorderStyle.None; productDataGridView.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(238, 239, 249); productDataGridView.CellBorderStyle = DataGridViewCellBorderStyle.SingleHorizontal; productDataGridView.DefaultCellStyle.SelectionBackColor = Color.DarkTurquoise; productDataGridView.DefaultCellStyle.SelectionForeColor = Color.WhiteSmoke; productDataGridView.BackgroundColor = Color.White; productDataGridView.EnableHeadersVisualStyles = false; productDataGridView.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None; productDataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(20, 25, 72); productDataGridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.White; }
//the method ensures unique product ID private bool IsExistingID(TextBox IDtextBox) { Product product = null; using (ProductsDataContext dataContext = new ProductsDataContext()) { product = (from p in dataContext.Products where p.ProductId.ToString() == IDtextBox.Text select p).SingleOrDefault(); //dataContext.Products.Single(p => p.ProductId.ToString() == IDtextBox.Text); if (product != null) // there is another product with same code { MessageBox.Show("Product code must be unique", "Entry Error"); return(false); } else { return(true); } } }
private void ReloadGridView() { ProductsDataContext dataContext = new ProductsDataContext(); productDataGridView.DataSource = dataContext.Products; }