protected void registerUsernameValidate(object source, ServerValidateEventArgs args)
        {
            string username = registerUsername.Text;

            if (string.IsNullOrEmpty(username))
            {
                return;
            }
            // set select sql
            RegisterSqlDataSource.SelectCommand = "SELECT COUNT(*) from [user] WHERE [username]=@username";

            // set select parameter
            RegisterSqlDataSource.SelectParameters.Clear();
            RegisterSqlDataSource.SelectParameters.Add("@username", username);

            // execute select command
            int count = (int)((DataView)RegisterSqlDataSource.Select(DataSourceSelectArguments.Empty))[0][0];

            if (count == 0)
            {
                // no same username
                args.IsValid = true;
            }
            else
            {
                args.IsValid = false;
                registerUsernameDuplicateValidator.ErrorMessage = "This username has already been registered, try another";
            }
        }
        protected void registerBtn_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                // get register data from page forms
                string username   = registerUsername.Text;
                string password   = registerPassword.Text;
                string email      = registerEmail.Text;
                string gender     = genderRadioButtonList.SelectedValue;
                string profession = professionDropDownList.SelectedValue;
                string age        = registerAge.Text;

                List <string> favoriteCatBreeds = new List <string>();
                foreach (ListItem item in registerFavoriteCatBreeds.Items)
                {
                    if (item.Selected)
                    {
                        // item ...
                        favoriteCatBreeds.Add(item.Value);
                    }
                }
                string favoriteCatBreedsStr = string.Join(",", favoriteCatBreeds.ToArray());
                string motto           = registerMotto.Text;
                bool   ownCats         = ownCatCheckbox.Checked;
                string userProtrialUrl = registerPortraitPreview.ImageUrl;

                // set insert sql
                RegisterSqlDataSource.InsertCommand =
                    "INSERT INTO [user] " +
                    "([username], [password], [gender], [profession], [interests], [own_cats], [email], [usericon], [motto], [age]) " +
                    "VALUES " +
                    "([@username], [@password], [@gender], [@profession], [@interests], [@own_cats], [@email], [@usericon], [@motto], [@age])";

                RegisterSqlDataSource.InsertParameters.Clear();
                RegisterSqlDataSource.InsertParameters.Add("@username", username);
                RegisterSqlDataSource.InsertParameters.Add("@password", password);
                RegisterSqlDataSource.InsertParameters.Add("@gender", gender);
                RegisterSqlDataSource.InsertParameters.Add("@profession", profession);
                RegisterSqlDataSource.InsertParameters.Add("@interests", favoriteCatBreedsStr);
                RegisterSqlDataSource.InsertParameters.Add("@own_cats", DbType.Boolean, ownCats ? "true" : "false");
                RegisterSqlDataSource.InsertParameters.Add("@email", email);
                RegisterSqlDataSource.InsertParameters.Add("@usericon", userProtrialUrl);
                RegisterSqlDataSource.InsertParameters.Add("@motto", motto);
                RegisterSqlDataSource.InsertParameters.Add("@age", DbType.Int32, age);

                RegisterSqlDataSource.Insert();

                Response.Redirect("/Login.aspx");
            }
        }