Search code examples
c#asp.netwebusercontrolasp.net-controls

Visual Studio User Control ASP, C#, Code Behind issue


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.

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.

So here is the working code

The btnSubmit_Click method adds the information to the database without a problem.

Now for the user user control code. 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.

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.

Working 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 => 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 => 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<ListViewCommandEventArgs>(lvInventory_ItemCommand);
        this.lvInventories.PagePropertiesChanging += new EventHandler<PagePropertiesChangingEventArgs>(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 => 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 > 0)
                {
                    inv = context.Inventory_Items.SingleOrDefault(x => 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

}
}

User Control 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 > 0)
                {
                    inv = context.Inventory_Items.SingleOrDefault(x => 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 => 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.");
            }
        }
    }
}
}

Solution

  • Why don't you try putting ( this.btnSubmit.Click += new ImageClickEventHandler(btnSubmit_Click);) outside isnot postback?