using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Eventmanagement
{
    public partial class Registration : Form
    {
        SqlConnection aConnection;
        string firstname= string.Empty; 
        string lastname= string.Empty;
        int aid;
        string date = DateTime.Now.ToShortDateString();
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dta;


        public Registration(string fname, string lname, int attID)
        {
            this.firstname = fname;
            this.lastname = lname;
            this.aid = attID;
            InitializeComponent();
        }
        //--------------------------------------------//

        private void Registration_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'insertEventDataSet.Events' table. You can move, or remove it, as needed.

            populateEventSalesPersonList();
            populateEventNameIdTypeList();

            //+++++++++++++++++++++++++++++++++++++++++++//
            txtSalesTaxRate_Registration.Text = Convert.ToString( SalesTaxRate());
            txtRegistrationID_Registration.Text = regID().ToString();
            //+++++++++++++++++++++++++++++++++++++++++++//

            //+++++++++++++++++++++++++++++++++++++++++++//
            txtAttendee_Registration.Text = (this.firstname+" "+this.lastname);
            txtRegistrationDate_Registration.Text = date.ToString();


        }

        //--------------------------------------------//

        public string getConnectionString()
        {
            try
            {
                string sConnection = "";

                // Get the mapped configuration file.
                System.Configuration.ConnectionStringSettingsCollection ConnSettings = ConfigurationManager.ConnectionStrings;
                sConnection = ConnSettings["DBConnectionString"].ToString();

                return sConnection;


            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                return "";
            }
        }



        //--------------------------------------------//
        public void populateEventNameIdTypeList()
        {
            try
            {
                cmbEvent_Registration.DataSource = getDataTable4();
                //----------------------------
                cmbEvent_Registration.ValueMember = "EventID";
                cmbEvent_Registration.DisplayMember = "EventName";




            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }


        }


        //--------------------------------------------//

        public void populateEventSalesPersonList()
        {
             try
            {

                cmbSalesPerson_Registration.DataSource = getDataTable5();
                cmbSalesPerson_Registration.ValueMember = "EmployeeID";
                cmbSalesPerson_Registration.DisplayMember = "SalesPerson";

            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

        //-------------------------------------------//

        public void populateFeeScheduleByEventList()
        {

            try
            {

                cmbFeeSchedule_Registration.DataSource = getDataTable6(); 
                cmbFeeSchedule_Registration.ValueMember = "FeeScheduleID";
                cmbFeeSchedule_Registration.DisplayMember = "Fee";




                //--------------------------------------------------//

                //saleTax();
                //txtSalesTax_Registration.Text = Convert.ToString(saleTax());
                //txtTotalCharges_Registration.Text = Convert.ToString(totalCharges());
                //txtAmountDue_Registration.Text = Convert.ToString(amountDue());

                //--------------------------------------------------//
                }

            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }

        }

        //------------------------------------------//

        //------------------------------------------//



        private void btnclose_Registration_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnInsert_Registration_Click(object sender, EventArgs e)
        {
            try
            {
                aConnection = new SqlConnection(getConnectionString());
                aConnection.Open();

                //Calling the Stored Procedure

                da.InsertCommand = new SqlCommand("RegistrationInsert", aConnection);
                da.InsertCommand.CommandType = CommandType.StoredProcedure;

                //da.InsertCommand.Parameters.Add(@"RegistrationID", SqlDbType.Int).Value =  Convert.ToInt16( txtRegistrationID_Registration.Text);
                da.InsertCommand.Parameters.Add(@"AttendeeID", SqlDbType.Int).Value =  Convert.ToInt16( aid); 
                da.InsertCommand.Parameters.Add(@"RegistrationDate", SqlDbType.SmallDateTime).Value = Convert.ToDateTime(txtRegistrationDate_Registration.Text=date.ToString());
                da.InsertCommand.Parameters.Add(@"PurchaseOrderNumber", SqlDbType.VarChar).Value = txtPoNumber_Registration.Text; 
               // da.InsertCommand.Parameters.Add(@"SalesPerson", SqlDbType.Int).Value = Convert.ToInt64(cmbSalesPerson_Registration.SelectedValue.ToString());
                da.InsertCommand.Parameters.Add(@"EventID", SqlDbType.Int).Value = cmbEvent_Registration.SelectedValue.ToString();
                da.InsertCommand.Parameters.Add(@"FeeScheduleID", SqlDbType.Int).Value = cmbFeeSchedule_Registration.SelectedValue.ToString();
                da.InsertCommand.Parameters.Add(@"RegistrationFee", SqlDbType.Money).Value = txtRegistrationFee_Registration.Text;
                da.InsertCommand.Parameters.Add(@"EmployeeID", SqlDbType.Int).Value = Convert.ToInt16(cmbSalesPerson_Registration.SelectedValue.ToString());
                da.InsertCommand.Parameters.Add(@"SalesTaxRate", SqlDbType.Float).Value = txtSalesTaxRate_Registration.Text;
                //da.InsertCommand.Parameters.Add(@"EndTime", SqlDbType.SmallDateTime).Value = Convert.ToDateTime(txtEndTime.Text.ToString());
                da.InsertCommand.ExecuteNonQuery();


                MessageBox.Show("Inserted successfully!!!");

                aConnection.Close();
                da.InsertCommand.Dispose();

            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }


        }

        //-------------------------------------------//

        public DataTable getDataTable4()
        {
            try
            {
                dta = new DataTable();
                aConnection = new SqlConnection(getConnectionString());
                aConnection.Open();
                da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand("EventsSelectAll", aConnection);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.ExecuteNonQuery();

                da.Fill(dta);
                aConnection.Close();
                return dta;

            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                return null;
            }
        }
        public DataTable getDataTable5()
        {
            try
            {
                dta = new DataTable();
                aConnection = new SqlConnection(getConnectionString());
                aConnection.Open();
                da = new SqlDataAdapter();
                da.SelectCommand = new SqlCommand("sp_RegistrationSalesPerson", aConnection);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.ExecuteNonQuery();
                dta.Clear();
                da.Fill(dta);
                aConnection.Close();
                return dta;

            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                return null;
            }
        }
        public DataTable getDataTable6()
        {
            try
            {
                dta = new DataTable();
                da = new SqlDataAdapter();
                aConnection = new SqlConnection(getConnectionString());

                aConnection.Open();

                da.SelectCommand = new SqlCommand("sp_FeeScheduleSelectAllByEventID", aConnection);
                da.SelectCommand.Parameters.Add("EventID", SqlDbType.Int).Value = Convert.ToInt32(cmbEvent_Registration.SelectedValue.ToString());
                da.SelectCommand.CommandType = CommandType.StoredProcedure;


                da.SelectCommand.ExecuteNonQuery();
                da.Fill(dta);
                aConnection.Close();
                return dta;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
                return null;
            }


        }



        private void cmbEvent_Registration_SelectedIndexChanged(object sender, EventArgs e)
        {
                populateFeeScheduleByEventList();

                txtRemainingSeats_Registration.Text = Convert.ToString(spaces());
        }




        public double saleTax()
        {                               
            double regFee = Convert.ToDouble(cmbFeeSchedule_Registration.SelectedText);
            double sTR = Convert.ToDouble(SalesTaxRate());
            double sr = regFee * (sTR / 100);
            return sr;
        }
        public int totalRegisteredAttendees()
        {
            da = new SqlDataAdapter();
            aConnection = new SqlConnection(getConnectionString());
            da.SelectCommand = new SqlCommand("RegistrationSelectAllByEventID", aConnection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.Add("EventID", SqlDbType.Int).Value = Convert.ToInt32(cmbEvent_Registration.SelectedValue.ToString());

            aConnection.Open();
            int val = (int)da.SelectCommand.ExecuteScalar();
            aConnection.Close();
            return val;
        }
        public int spaces()
        {
            da = new SqlDataAdapter();
            aConnection = new SqlConnection(getConnectionString());
            da.SelectCommand = new SqlCommand("EventsSelect", aConnection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.Add("EventID", SqlDbType.Int).Value = Convert.ToInt32(cmbEvent_Registration.SelectedValue.ToString());
            aConnection.Open();

            int spaces = Convert.ToInt16(da.SelectCommand.ExecuteScalar());
            aConnection.Close();

            int value = totalRegisteredAttendees();
            int totalspaces = spaces - value;
            return totalspaces;

        }

        public double SalesTaxRate()
        {
            da = new SqlDataAdapter();
            aConnection = new SqlConnection(getConnectionString());
            da.SelectCommand = new SqlCommand("CompanyInfo", aConnection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;

            aConnection.Open();
            double sale = Convert.ToDouble(da.SelectCommand.ExecuteScalar());
            aConnection.Close();
            return sale;
        }


        public double totalCharges()
        {
            double tc = Convert.ToDouble(txtRegistrationFee_Registration.Text) +  (saleTax());
            return tc;
        }
        public double amountDue()
        {
            double aD;
            if (txtTotalPaid_Registration.Text == string.Empty)
            {
                aD = Convert.ToDouble(txtTotalCharges_Registration.Text.ToString());
            }
            else
            {
                double a = Convert.ToDouble(txtTotalPaid_Registration.Text.ToString());
                 double b=    (Convert.ToDouble(txtTotalCharges_Registration.Text.ToString()));
                 aD = b-a;
            }
                return aD;
        }

        public int regID()
        {
            da = new SqlDataAdapter();
            aConnection = new SqlConnection(getConnectionString());
            da.SelectCommand = new SqlCommand("RegistrationID", aConnection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;

            aConnection.Open();
            int id = ((int)da.SelectCommand.ExecuteScalar())+1;

            aConnection.Close();
            return id;  
        }

        private void cmbFeeSchedule_Registration_SelectedIndexChanged(object sender, EventArgs e)
        {
           saleTax();
        }

        //------------------------------------------//
    }
}
private void cmbFeeSchedule_Registration_SelectedIndexChanged(object sender, EventArgs e) { saleTax(); }

When I call

SaleTax()

Method in following


I get "FormatException was unhandled by user Code" Error I debugged the Code and find out that it is happening because

cmbFeeSchedule_Registration

is not selecting the first index, hence it is giving the error. I am confused what to do? How I get around this Problem?

In the line double regFee = Convert.ToDouble(cmbFeeSchedule_Registration.SelectedText); in SaleTax it is possible that 'SelectedText' does not yet have a value.
This is possible because your code is running in the SelectedIndexChanged event.
If you want to use the SelectedText then consider using the TextChanged event instead.
Perhaps more suitable would be to use the ValueChanged event and the SelectedValue property.

Edit
Note: SelectedText is the text selected in the edit portion of the combo.
It is not the text value of the selected item.
This is to be found in the SelectedValue property.

Edited 5 Years Ago by nick.crane: Added note about SelectedText

Thank you. I have solved the Problem, you are right the values were not assigning.

This question has already been answered. Start a new discussion instead.