Imports System Imports System.Web.UI Imports Northwind45.BusinessObject Imports System.Web.Services Imports System.Collections.Generic Imports Microsoft.AspNet.FriendlyUrls Namespace Northwind45 Partial Public Class AddEditProducts Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then DdlSupplierID.DataSource = Suppliers.SelectSuppliersDropDownListData() DdlSupplierID.DataBind() DdlCategoryID.DataSource = Categories.SelectCategoriesDropDownListData() DdlCategoryID.DataBind() Dim queryStrings As IList(Of String) = Request.GetFriendlyUrlSegments() If queryStrings.Count = 2 Then Dim operation As String = queryStrings(0) If operation = "update" Then LblTitle.Text = "Edit Products" BtnUpdateRecord.Visible = True BtnAddRecord.Visible = False ' retrieve id(s) to be updated Dim productID As String = queryStrings(1) If Not String.IsNullOrEmpty(productID) Then ' retrieve record to be updated Dim objProducts As Products = Northwind45.BusinessObject.Products.SelectByPrimaryKey(Convert.ToInt32(productID)) If objProducts IsNot Nothing Then TxtProductID.Enabled = False TxtProductID.Text = objProducts.ProductID.ToString() TxtProductName.Text = objProducts.ProductName DdlSupplierID.SelectedValue = objProducts.SupplierID.ToString() DdlCategoryID.SelectedValue = objProducts.CategoryID.ToString() TxtQuantityPerUnit.Text = objProducts.QuantityPerUnit CbxDiscontinued.Checked = objProducts.Discontinued If objProducts.UnitPrice IsNot Nothing Then TxtUnitPrice.Text = objProducts.UnitPrice.ToString() End If If objProducts.UnitsInStock IsNot Nothing Then TxtUnitsInStock.Text = objProducts.UnitsInStock.ToString() End If If objProducts.UnitsOnOrder IsNot Nothing Then TxtUnitsOnOrder.Text = objProducts.UnitsOnOrder.ToString() End If If objProducts.ReorderLevel IsNot Nothing Then TxtReorderLevel.Text = objProducts.ReorderLevel.ToString() End If End If End If Else ' add a record PnlPrimaryKey.Visible = False BtnUpdateRecord.Visible = False End If End If End If End Sub Protected Sub BtnAddRecord_Click(sender As Object, e As EventArgs) Handles BtnAddRecord.Click AddOrUpdateRecord("add") End Sub Protected Sub BtnUpdateRecord_Click(sender As Object, e As EventArgs) Handles BtnUpdateRecord.Click AddOrUpdateRecord("update") End Sub Private Sub AddOrUpdateRecord(operation As String) If IsValid Then Dim objProducts As Products If operation = "update" Then objProducts = Northwind45.BusinessObject.Products.SelectByPrimaryKey(Convert.ToInt32(TxtProductID.Text)) Else objProducts = New Products() End If objProducts.ProductName = TxtProductName.Text objProducts.Discontinued = CbxDiscontinued.Checked If String.IsNullOrEmpty(DdlSupplierID.SelectedValue) Then objProducts.SupplierID = Nothing Else objProducts.SupplierID = Convert.ToInt32(DdlSupplierID.SelectedValue) End If If String.IsNullOrEmpty(DdlCategoryID.SelectedValue) Then objProducts.CategoryID = Nothing Else objProducts.CategoryID = Convert.ToInt32(DdlCategoryID.SelectedValue) End If If String.IsNullOrEmpty(TxtQuantityPerUnit.Text) Then objProducts.QuantityPerUnit = Nothing Else objProducts.QuantityPerUnit = TxtQuantityPerUnit.Text End If If String.IsNullOrEmpty(TxtUnitPrice.Text) Then objProducts.UnitPrice = Nothing Else objProducts.UnitPrice = Convert.ToDecimal(TxtUnitPrice.Text) End If If String.IsNullOrEmpty(TxtUnitsInStock.Text) Then objProducts.UnitsInStock = Nothing Else objProducts.UnitsInStock = Convert.ToInt16(TxtUnitsInStock.Text) End If If String.IsNullOrEmpty(TxtUnitsOnOrder.Text) Then objProducts.UnitsOnOrder = Nothing Else objProducts.UnitsOnOrder = Convert.ToInt16(TxtUnitsOnOrder.Text) End If If String.IsNullOrEmpty(TxtReorderLevel.Text) Then objProducts.ReorderLevel = Nothing Else objProducts.ReorderLevel = Convert.ToInt16(TxtReorderLevel.Text) End If ' the insert method returns the newly created primary key Dim newlyCreatedPrimaryKey As Integer Dim isNoErrors As Boolean = True Try If operation = "update" Then objProducts.Update() Else newlyCreatedPrimaryKey = objProducts.Insert() End If Catch ex As Exception If operation = "update" Then Functions.ShowModalError(ex, Me, "An rror occured on item update!") Else Functions.ShowModalError(ex, Me, "An error occured on item insertion!") End If isNoErrors = False End Try If isNoErrors Then Response.Redirect("~/GridViewProducts") End If End If End Sub End Class End Namespace