0
我對這段代碼感到困惑。Asp.net MembershipUser從GridView中檢索數據
我需要設置IsApproved = true;對於用戶(使用MembershipUser)當我在GridView中選擇一個CheckBox時。
事件處理程序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);
}
}
嗨,是的事件正在被解僱。所有的邏輯工作。 AutoPostBack對於CheckBox爲TRUE。我試圖調試我的代碼,我和MembershipUser myUser總是在NULL ....任何想法?感謝您的時間 – GibboK 2010-10-16 07:41:59
你能告訴它在什麼時候不工作......就像你可以在那裏放置一些斷點並調試並看看事情出錯的地方? uxMessageDisplayer.Text是否被更改? (如果沒有拋出異常,應該如果不是的話),再次檢查這個方法是否真的在運行。如果是的話,儘量縮小這部分不起作用 – 2010-10-17 08:09:01
嗨,克里斯,我再次測試腳本,沒有任何異常被拋出,uxMessageDisplayer.Text得到正確更改,事件和方法已被正確使用。 使用一些斷點我可以確認你的問題是 「MembershipUser myUser =(MembershipUser)user.DataItem;」 myUser的值始終爲NULL,所以我無法應用Membership.UpdateUser(myUser); 任何想法?感謝您的支持:-) – GibboK 2010-10-18 06:14:10