protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                ResetMsgs();

                //validate fields and save record
                if (IsValidInput(txtFirstName.Text) && IsValidInput(txtLastName.Text) && IsValidInput(txtPhoneNo.Text))
                {

                    ContactsDataContext db = new ContactsDataContext();

                    Contact addContact = new Contact();

                    addContact.FirstName = txtFirstName.Text;
                    addContact.LastName = txtLastName.Text;
                    addContact.PhoneNo = txtPhoneNo.Text;

                    db.Contacts.InsertOnSubmit(addContact);
                    db.SubmitChanges();

                    ClearForm();
                    pnlSuccess.Visible = true;
                    ltlSuccess.Text = "Contact " + txtFirstName.Text.ToString() + " " + txtLastName.Text.ToString() + " saved";

                }
                else
                {
                    //validation of text fields
                    if (!(IsValidInput(txtFirstName.Text)))
                    {
                        divFirstName.Attributes["class"] = "clearfix error";
                        txtFirstName.CssClass = "error";
                        helpFirstName.Visible = true;
                    }
                    if (!(IsValidInput(txtLastName.Text)))
                    {
                        divLastName.Attributes["class"] = "clearfix error";
                        txtLastName.CssClass = "error";
                        helpLastName.Visible = true;
                    }
                    if (!(IsValidInput(txtPhoneNo.Text)))
                    {
                        divPhoneNo.Attributes["class"] = "clearfix error";
                        txtPhoneNo.CssClass = "error";
                        helpPhoneNo.Visible = true;
                    }
                    pnlError.Visible = true;
                    ltlError.Text = "Please correct the errors below";

                }
            }
            catch (Exception ex)
            {
                pnlError.Visible = true;
                ltlError.Text = ex.Message;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            ContactsDataContext db = new ContactsDataContext();

            var query = from c in db.Contacts
                        select c;
            grdContacts.DataSource = query;
            grdContacts.DataBind();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            //grab the contact id from the querystring
            var cid = Page.Request.QueryString["contactid"];

            if (cid != null)
            {
                try
                {
                    cidInt = Convert.ToInt32(cid);
                }
                catch (Exception ex)
                {
                    pnlError.Visible = true;
                    ltlError.Text = ex.Message;
                }
            }

            if (!(Page.IsPostBack))
            {

                if (cid != null)
                {
                    try
                    {
                        //retrieve the contact details and populate the form fields
                        ContactsDataContext db = new ContactsDataContext();

                        var query = (from c in db.Contacts
                                     where c.ContactID == cidInt
                                     select c).FirstOrDefault();

                        txtFirstName.Text = query.FirstName;
                        txtLastName.Text = query.LastName;
                        txtPhoneNo.Text = query.PhoneNo;
                    }
                    catch (Exception ex)
                    {
                        pnlError.Visible = true;
                        ltlError.Text = ex.Message;
                    }
                }
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                ResetMsgs();

                if (IsValidInput(txtFirstName.Text) && IsValidInput(txtLastName.Text) && IsValidInput(txtPhoneNo.Text))
                {
                    ContactsDataContext db = new ContactsDataContext();

                    // Query the database for the row to be updated.
                    var editContact = from c in db.Contacts
                                where c.ContactID == cidInt
                                       select c;

                    foreach (Contact c in editContact)
                    {
                        c.FirstName = txtFirstName.Text;
                        c.LastName = txtLastName.Text;
                        c.PhoneNo = txtPhoneNo.Text;
                        // Insert any additional changes to column values.
                    }

                    // Submit the changes to the database.
                    try
                    {
                        db.SubmitChanges();
                        pnlSuccess.Visible = true;
                        ltlSuccess.Text = "Record updated.";
                    }
                    catch (Exception ex)
                    {
                        pnlError.Visible = true;
                        ltlError.Text = ex.Message;
                    }

                }
                else
                {
                    //validate form fields
                    if (!(IsValidInput(txtFirstName.Text)))
                    {
                        divFirstName.Attributes["class"] = "clearfix error";
                        txtFirstName.CssClass = "error";
                        helpFirstName.Visible = true;
                    }
                    if (!(IsValidInput(txtLastName.Text)))
                    {
                        divLastName.Attributes["class"] = "clearfix error";
                        txtLastName.CssClass = "error";
                        helpLastName.Visible = true;
                    }
                    if (!(IsValidInput(txtPhoneNo.Text)))
                    {
                        divPhoneNo.Attributes["class"] = "clearfix error";
                        txtPhoneNo.CssClass = "error";
                        helpPhoneNo.Visible = true;
                    }
                    pnlError.Visible = true;
                    ltlError.Text = "Please correct the errors below";

                }
            }
            catch (Exception ex)
            {
                pnlError.Visible = true;
                ltlError.Text = ex.Message;
            }
        }