Asp.net MembershipUser извлекает данные из GridView - PullRequest
0 голосов
/ 15 октября 2010

Я озадачен этим кодом.

Мне нужно установить IsApproved = true;для пользователя (использующего MembershipUser), когда я выбираю CheckBox в GridView.

Обработчик события uxRoleCheckBoxSelector_CheckChanged устанавливается на фактический CheckBox.

Не могли бы вы сказать мне, ребята, что я делаю неправильно?

Скрипт не генерирует никаких исключений, но не работает.Спасибо за вашу поддержку!

 protected void uxRoleCheckBoxSelector_CheckChanged(object sender, EventArgs e)
        {
            // Cast sender to CheckBox
            CheckBox activeCheckBox = (CheckBox)sender;
            // Retrieve the row where CheckBox is contained (NamingContainer used to retrive parent control
            GridViewRow row = (GridViewRow)activeCheckBox.NamingContainer; 
            // Retrive the Lable for an User name in a row
            Label myUserName = (Label)row.FindControl("uxUserNameLabelDisplayer");

            GridViewRow user = (GridViewRow)myUserName.NamingContainer;
            MembershipUser myUser = (MembershipUser)user.DataItem;


            if (activeCheckBox.Checked == true)
            {
                uxMessageDisplayer.Text = "T - Aproved User";
                myUser.IsApproved = true;
                Membership.UpdateUser(myUser);
            }
            else
            {
                uxMessageDisplayer.Text = "F - NOT Aproved User";
                myUser.IsApproved = false;
                Membership.UpdateUser(myUser);
            }
        }

После прихода твиков и ваших советов здесь скрипт отредактирован.Сейчас работает ... Надежда может помочь кому-то еще: -)

protected void uxRoleCheckBoxSelector_CheckChanged(object sender, EventArgs e)
    {
        // Cast sender to CheckBox
        CheckBox activeCheckBox = (CheckBox)sender;
        // Retrieve the row where CheckBox is contained (NamingContainer used to retrive parent control
        GridViewRow row = (GridViewRow)activeCheckBox.NamingContainer;
        // Retrive the name for the User from a label
        Label myUserName = (Label)row.FindControl("uxUserNameLabelDisplayer"); 

        // Keep User's name in a variable
        string UserName = myUserName.Text;
        // Create an Object of type MembershipUser and associate its User's name
        MembershipUser myUser = Membership.GetUser(UserName);

        // Check if a CheckBox is selected or not for a User
        if (activeCheckBox.Checked == true)
        {
            // Set status for an User
            myUser.IsApproved = true;
            // Save status
            Membership.UpdateUser(myUser);
            // Display message
            uxMessageDisplayer.Text = string.Format("The User {0} has been activated.", UserName);
        }
        else
        {
            myUser.IsApproved = false;
            Membership.UpdateUser(myUser);
            uxMessageDisplayer.Text = string.Format("The User {0} has  been deactivated. User cannot use this System.", UserName);
        }
    }

1 Ответ

0 голосов
/ 15 октября 2010

Вы уверены, что это событие действительно запускается (и, таким образом, этот метод на самом деле запущен)?

У вас установлен флажок AutoPostBack = true?Если нет, и вы используете кнопку для обратной передачи, я не уверен, что это событие будет запущено для флажка ... но поправьте меня, если я ошибаюсь.

...