// Invoke the Changed event; called whenever list changes protected virtual void OnAddValidate(BarCodeAddValidateEventArgs e) { if (AddValidate != null) { AddValidate(this, e); } }
protected void btnAdd_Click(object sender, EventArgs e) { DataTable dt = GetTableWithNoData(); // get select column header only records not required DataRow dr; bool duplicateFound = false; bool barcodeNotFound = false; foreach (GridViewRow gvr in grd.Rows) { dr = dt.NewRow(); Literal litBarcode = gvr.FindControl("litBarcode") as Literal; Literal litPackageType = gvr.FindControl("litPackageType") as Literal; Literal litExpirationDate = gvr.FindControl("litExpirationDate") as Literal; Literal litPackageId = gvr.FindControl("litPackageId") as Literal; dr["Barcode"] = litBarcode.Text; dr["PackageType"] = litPackageType.Text; dr["ExpirationDate"] = DateTime.Parse(litExpirationDate.Text); dr["PackageId"] = int.Parse(litPackageId.Text); dt.Rows.Add(dr); // add grid values in to row and add row to the blank table if (litBarcode.Text == txtBarcode.Text) { duplicateFound = true; } } IPackageRepository repository = new PackageRepository(ConfigurationManager.ConnectionStrings["ENetCare"].ConnectionString); PackageService packageService = new PackageService(repository); BarCodeAddValidateEventArgs eventArgs = new BarCodeAddValidateEventArgs() { Success = true }; Package package = packageService.Retrieve(txtBarcode.Text); if (package == null) { barcodeNotFound = true; } else { eventArgs.Package = package; OnAddValidate(eventArgs); } if (duplicateFound) { litMessage.Text = "Barcode already selected"; } else if (barcodeNotFound) { litMessage.Text = "Barcode not found"; } else if (!eventArgs.Success) { litMessage.Text = eventArgs.ErrorMessage; } else { litMessage.Text = string.Empty; dr = dt.NewRow(); // add last empty row dr["Barcode"] = txtBarcode.Text; dr["PackageType"] = package.PackageType.Description; dr["ExpirationDate"] = package.ExpirationDate; dr["PackageId"] = package.PackageId; dt.Rows.Add(dr); txtBarcode.Text = string.Empty; } grd.DataSource = dt; // bind new datatable to grid grd.DataBind(); }