title: Visual Studio User Control ASP, C#, Code Behind issue
body: <p>Okay this is probably a shot in the dark as it would be very difficult to guess what is going on here. But I am running out of options here.</p>
  
  <p>So I have this code behind for a page that a user is able to fill out the input fields that are on the page and then by clicking the submit button, the information is added to the database. This works 100%. However, I want to put this functionality in a user control so I can use it on a different page but have the same effect. However I can't get this to work.</p>
  
  <p>So here is the working <a href="http://pastebin.com/K5V7TApQ" rel="nofollow">code</a></p>
  
  <p>The btnSubmit_Click method adds the information to the database without a problem.</p>
  
  <p>Now for the user <a href="http://pastebin.com/YxSEByx6" rel="nofollow">user control code</a>. This doesn't do anything. The only difference I did was that it uses an ASPImageButton, which I had originally just a regular ASPButton but that didn't  make a different.</p>
  
  <p>So as I said a shot in the dark. If anyone has any suggestions on what to try or a fix please let me know. I can provide more information if needed.</p>
  
  <p>Working Code:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Data;
  using System.Data.Linq;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  
  using SenProPOS.Data;
  using SenProPOS.Web.Classes;
  
  namespace SenProPOS.Web.Admin.Pages
  {
  public partial class InventoryMaintenance : BasePage
  {
  
      protected void Page_Load(object sender, EventArgs e)
      {
          if (!IsPostBack)
          {
              BindInventoryEntries();
          }
      }
  
      #region Properties
  
      protected int CurrentInventoryID
      {
          get { return ViewState["CurrentInventoryID"] == null ? -1 : Convert.ToInt32(ViewState["CurrentInventoryID"].ToString()); }
          set { ViewState["CurrentInventoryID"] = value; }
      }
  
      protected int CurrentInventoryMaintPage
      {
          get { return ViewState["CurrentInventoryMaintPage"] == null ? 1 : Convert.ToInt32(ViewState["CurrentInventoryMaintPage"].ToString()); }
          set { ViewState["CurrentInventoryMaintPage"] = value; }
      }
  
      protected int InventoryEntriesPerPage
      {
          get { return Convert.ToInt32(ViewState["InventoryEntriesPerPage"] as String ?? "25"); }
          set { ViewState["InventoryEntriesPerPage"] = value; }
      }
  
  
      #endregion
  
      #region Methods
  
      private void BindInventoryEntries()
      {
          try
          {
  
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  var inventories = context.Inventory_Items.ToList();
  
                  String search = tbInventorySearch.Text.Trim().ToLower();
                  if (!String.IsNullOrEmpty(search))
                  {
                      inventories = inventories.Where(x =&gt; x.Name.ToLower().Contains(search)
                          || x.Description.ToLower().Contains(search.ToLower())
                          || x.UPC == Convert.ToInt32(search)
                          || x.Quantity == Convert.ToInt32(search)
                          || (double)x.Price == Convert.ToDouble(search)
                          || (double)x.Cost == Convert.ToDouble(search))
                          .ToList();
                  }
  
                  lvInventories.DataSource = inventories;
                  lvInventories.DataBind();
  
                  if (String.IsNullOrEmpty(this.lvInventories.SortExpression))
                  {
                      lvInventories.Sort("Name", SortDirection.Descending);
                  }
  
                  /**
                  var departments = context.Departments.ToList();
                  this.ddlDepartment.DataSource = departments;
                  this.ddlDepartment.DataValueField = "ID";
                  this.ddlDepartment.DataTextField = "Name";
                  this.ddlDepartment.DataBind();
  
                  var categories = context.Categories.ToList();
                  this.ddlCategory.DataSource = categories;
                  this.ddlCategory.DataValueField = "ID";
                  this.ddlCategory.DataTextField = "Name";
                  this.ddlCategory.DataBind();
                   * **/
  
              }
          }
          catch (Exception ex)
          {
              ;
          }
      }
  
      private void InventoryEntrySelected(int InventoryID)
      {
          CurrentInventoryID = InventoryID;
  
          this.tbName.Text = String.Empty;
          this.tbUPC.Text = String.Empty;
          this.tbDescription.Text = String.Empty;
          this.tbQuantity.Text = String.Empty;
          this.tbPricePerUnit.Text = String.Empty;
          this.tbCostPerUnit.Text = String.Empty;
          this.ddlDepartment.SelectedIndex = -1;
          this.ddlCategory.SelectedIndex = -1;
  
          if (CurrentInventoryID != -1)
          {
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  var inventory = context.Inventory_Items.SingleOrDefault(x =&gt; x.ID == CurrentInventoryID);
                  if (inventory != null)
                  {
                      this.tbName.Text = inventory.Name;
                      this.tbUPC.Text = inventory.UPC.ToString();
                      this.tbDescription.Text = inventory.Description;
                      this.tbQuantity.Text = inventory.Quantity.ToString();
                      this.tbPricePerUnit.Text = inventory.Price.ToString();
                      this.tbCostPerUnit.Text = inventory.Cost.ToString();
  
                      /** needs fixing yet
                      var department = this.ddlDepartment.Items.FindByValue(inventory..ToString());
                      if (department != null)
                      {
                          department.Selected = true;
                      }
  
                      var category = this.ddlCategories.Items.FindByValue(inventory.Category.ToString());
                      if (position != null)
                      {
                          position.Selected = true;
                      }
  
                      var category = this.ddlSuppliers.Items.FindByValue(inventory.Category.ToString());
                      if (supplier != null)
                      {
                          supplier.Selected = true;
                      }
  
                      **/
                  }
                  else throw new ApplicationException("The specified item was not found.");
              }
          }
      }
  
      #endregion
  
      #region Event Handlers
  
      protected override void OnPreRenderComplete(EventArgs e)
      {
          base.OnPreRenderComplete(e);
          RegisterListViewButtonsForAsyncPostback(lvInventories, "btnInventoryEntryEdit", "btnInventoryEntryDelete");
      }
  
      protected override void OnInit(EventArgs e)
      {
          base.OnInit(e);
          this.btnSubmit.Click += new EventHandler(btnSubmit_Click);
          this.btnInventoryAdd.Click += new EventHandler(btnInventoryAdd_Click);
          this.lvInventories.ItemCommand += new EventHandler&lt;ListViewCommandEventArgs&gt;(lvInventory_ItemCommand);
          this.lvInventories.PagePropertiesChanging += new EventHandler&lt;PagePropertiesChangingEventArgs&gt;(lvInventory_PagePropertiesChanging);
          this.tbInventorySearch.TextChanged += new EventHandler(tbInventorySearch_TextChanged);
      }
  
      void tbInventorySearch_TextChanged(object sender, EventArgs e)
      {
          BindInventoryEntries();
      }
  
      void btnInventoryAdd_Click(object sender, EventArgs e)
      {
          InventoryEntrySelected(-1);
      }
  
      void lvInventory_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
      {
          BindInventoryEntries();
      }
  
      void lvInventory_ItemCommand(object sender, ListViewCommandEventArgs e)
      {
          if (e.CommandName.Equals("edit-item"))
          {
              InventoryEntrySelected(Int32.Parse(e.CommandArgument.ToString()));
          }
          else if (e.CommandName.Equals("delete-item"))
          {
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  var inv = context.Inventory_Items.SingleOrDefault(x =&gt; x.ID == Int32.Parse(e.CommandArgument.ToString()));
                  if (inv != null)
                  {
                      context.Inventory_Items.DeleteOnSubmit(inv);
                      context.SubmitChanges();
                      BindInventoryEntries();
                  }
              }
          }
          else if (e.CommandName.Equals("Sort") || e.CommandName.Equals("Page")) { BindInventoryEntries(); }
      }
  
      void btnSubmit_Click(object sender, EventArgs e)
      {
          if (!Page.IsValid) { return; }
  
          try
          {
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  Inventory_Item inv = null;
                  if (CurrentInventoryID &gt; 0)
                  {
                      inv = context.Inventory_Items.SingleOrDefault(x =&gt; x.ID == CurrentInventoryID);
                  }
                  else
                  {
                      inv = new Inventory_Item();
                      context.Inventory_Items.InsertOnSubmit(inv);
                  }
  
                  if (inv != null)
                  {
                      if (!String.IsNullOrEmpty(this.tbName.Text))
                      {
                          inv.Name = this.tbName.Text;
                      }
                      else throw new ApplicationException("Invalid Name");
  
                      if (!String.IsNullOrEmpty(this.tbUPC.Text))
                      {
                          inv.UPC = Convert.ToInt64(this.tbUPC.Text);
                      }
                      else throw new ApplicationException("Invalid UPC#");
  
                      if (!String.IsNullOrEmpty(this.tbDescription.Text))
                      {
                          inv.Description = this.tbDescription.Text;
                      }
                      else throw new ApplicationException("Invalid Description");
  
                      if (!String.IsNullOrEmpty(this.tbQuantity.Text))
                      {
                          inv.Quantity = Convert.ToInt32(this.tbQuantity.Text);
                      }
                      else throw new ApplicationException("Invalid Quantity");
  
                      if (!String.IsNullOrEmpty(this.tbPricePerUnit.Text))
                      {
                          inv.Price = Convert.ToDecimal(this.tbPricePerUnit.Text);
                      }
                      else throw new ApplicationException("Invalid Price");
  
                      if (!String.IsNullOrEmpty(this.tbCostPerUnit.Text))
                      {
                          inv.Cost = Convert.ToDecimal(this.tbCostPerUnit.Text);
                      }
                      else throw new ApplicationException("Invalid Cost");
  
                      /**
                      int dep_id = 0;
                      if (Int32.TryParse(this.ddlDepartment.SelectedValue, out loc_id))
                      {
                          inv.Department = dep_id;
                      }
                      else throw new ApplicationException("Invalid Department");
  
                      int category = 0;
                      if (Int32.TryParse(this.ddlCategories.SelectedValue, out category))
                      {
                          inv.Category = category;
                      }
                      else throw new ApplicationException("Invalid Category");
                      **/
                      context.SubmitChanges();
                      BindInventoryEntries();
                  }
  
              }
          }
          catch (ApplicationException ax)
          {
              ;
          }
      }
  
      #endregion
  
  }
  }
  </code></pre>
  
  <p>User Control Code:</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  
  using SenProPOS.Data;
  
  namespace SenProPOS.Web.Controls
  {
  public partial class AddEditInventoryItem : System.Web.UI.UserControl
  {
      public int? InventoryItemID = -1;
  
      protected void Page_Load(object sender, EventArgs e)
      {
          if (!IsPostBack)
          {
              BindInventoryItemData();
              this.btnSubmit.Click += new ImageClickEventHandler(btnSubmit_Click);
          }
      }
  
      void btnSubmit_Click(object sender, ImageClickEventArgs e)
      {
          try
          {
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  Inventory_Item inv = null;
                  if (InventoryItemID &gt; 0)
                  {
                      inv = context.Inventory_Items.SingleOrDefault(x =&gt; x.ID == InventoryItemID);
                  }
                  else
                  {
                      inv = new Inventory_Item();
                      context.Inventory_Items.InsertOnSubmit(inv);
                  }
  
                  if (inv != null)
                  {
                      if (!String.IsNullOrEmpty(this.tbName.Text))
                      {
                          inv.Name = this.tbName.Text;
                      }
                      else throw new ApplicationException("Invalid Name");
  
                      if (!String.IsNullOrEmpty(this.tbUPC.Text))
                      {
                          inv.UPC = Convert.ToInt64(this.tbUPC.Text);
                      }
                      else throw new ApplicationException("Invalid UPC#");
  
                      if (!String.IsNullOrEmpty(this.tbDescription.Text))
                      {
                          inv.Description = this.tbDescription.Text;
                      }
                      else throw new ApplicationException("Invalid Description");
  
                      if (!String.IsNullOrEmpty(this.tbQuantity.Text))
                      {
                          inv.Quantity = Convert.ToInt32(this.tbQuantity.Text);
                      }
                      else throw new ApplicationException("Invalid Quantity");
  
                      if (!String.IsNullOrEmpty(this.tbPricePerUnit.Text))
                      {
                          inv.Price = Convert.ToDecimal(this.tbPricePerUnit.Text);
                      }
                      else throw new ApplicationException("Invalid Price");
  
                      if (!String.IsNullOrEmpty(this.tbCostPerUnit.Text))
                      {
                          inv.Cost = Convert.ToDecimal(this.tbCostPerUnit.Text);
                      }
                      else throw new ApplicationException("Invalid Cost");
  
                      /**
                      int dep_id = 0;
                      if (Int32.TryParse(this.ddlDepartment.SelectedValue, out loc_id))
                      {
                          inv.Department = dep_id;
                      }
                      else throw new ApplicationException("Invalid Department");
  
                      int category = 0;
                      if (Int32.TryParse(this.ddlCategories.SelectedValue, out category))
                      {
                          inv.Category = category;
                      }
                      else throw new ApplicationException("Invalid Category");
                      **/
                      context.SubmitChanges();
                      BindInventoryItemData();
                  }
  
              }
          }
          catch (ApplicationException ax)
          {
              ;
          }
      }
  
      public void BindInventoryItemData()
      {
          this.tbName.Text = String.Empty;
          this.tbUPC.Text = String.Empty;
          this.tbDescription.Text = String.Empty;
          this.tbQuantity.Text = String.Empty;
          this.tbPricePerUnit.Text = String.Empty;
          this.tbCostPerUnit.Text = String.Empty;
          this.ddlDepartment.SelectedIndex = -1;
          this.ddlCategory.SelectedIndex = -1;
  
          if (InventoryItemID != -1)
          {
              using (SenProDataDataContext context = new SenProDataDataContext())
              {
                  var inventory = context.Inventory_Items.SingleOrDefault(x =&gt; x.ID == InventoryItemID);
                  if (inventory != null)
                  {
                      this.tbName.Text = inventory.Name;
                      this.tbUPC.Text = inventory.UPC.ToString();
                      this.tbDescription.Text = inventory.Description;
                      this.tbQuantity.Text = inventory.Quantity.ToString();
                      this.tbPricePerUnit.Text = inventory.Price.ToString();
                      this.tbCostPerUnit.Text = inventory.Cost.ToString();
  
                      /** needs fixing yet
                      var department = this.ddlDepartment.Items.FindByValue(inventory..ToString());
                      if (department != null)
                      {
                          department.Selected = true;
                      }
  
                      var category = this.ddlSuppliers.Items.FindByValue(inventory.Category.ToString());
                      if (supplier != null)
                      {
                          supplier.Selected = true;
                      }
  
                      **/
                  }
                  else throw new ApplicationException("The specified item was not found.");
              }
          }
      }
  }
  }
  </code></pre>