温馨提示:代码在线浏览功能只能做为源码浏览参考,不能展示项目的全部,如果想更进一步了解该代码请下载:BlogEngine v1.3 多皮肤多语言版源码
当前文件路径:BlogEngine/admin/Pages/Users.aspx.cs

1Using 17
18
public partial class admin_newuser : System.Web.UI.Page 19
{ 20
protected void Page_Load(object sender, EventArgs e) 21
{ 22
gridUsers.RowEditing += new GridViewEditEventHandler(grid_RowEditing); 23
gridUsers.RowUpdating += new GridViewUpdateEventHandler(grid_RowUpdating); 24
gridUsers.RowCancelingEdit += delegate { Response.Redirect(Request.RawUrl); }; 25
gridUsers.RowDeleting += new GridViewDeleteEventHandler(grid_RowDeleting); 26
gridUsers.RowDataBound += new GridViewRowEventHandler(gridUsers_RowDataBound); 27
28
CreateUserWizard1.CreatingUser += new LoginCancelEventHandler(CreateUserWizard1_CreatingUser); 29
CreateUserWizard1.CreatedUser += new EventHandler(CreateUserWizard1_CreatedUser); 30
31
Page.Title = Resources.labels.users; 32
33
if (!Page.IsPostBack) 34
BindGrid(); 35
} 36
37
void CreateUserWizard1_CreatingUser(object sender, LoginCancelEventArgs e) 38
{ 39
if (Membership.GetUser(CreateUserWizard1.UserName) != null) 40
{ 41
e.Cancel = true; 42
lblError.Visible = true; 43
} 44
} 45
46
void gridUsers_RowDataBound(object sender, GridViewRowEventArgs e) 47
{ 48
if (e.Row.RowType == DataControlRowType.DataRow && !Page.IsPostBack) 49
{ 50
LinkButton delete = e.Row.Cells[0].Controls[2] as LinkButton; 51
DataBoundLiteralControl username = e.Row.Cells[1].Controls[0] as DataBoundLiteralControl; 52
string text = string.Format(Resources.labels.areYouSure, Resources.labels.delete.ToLowerInvariant(), username.Text.Trim()); 53
delete.OnClientClick = "return confirm('" + text.Replace("'", "\\'") + "')"; 54
} 55
} 56
57
private void BindGrid() 58
{ 59
int count = 0; 60
gridUsers.DataSource = Membership.Provider.GetAllUsers(0, 999, out count); 61
gridUsers.DataKeyNames = new string[] { "username" }; 62
gridUsers.DataBind(); 63
if (count > 0) 64
gridUsers.HeaderRow.Cells[1].Text = Resources.labels.userName; 65
} 66
67
/// <summary> 68
/// Handles the RowDeleting event of the grid control. 69
/// </summary> 70
/// <param name="sender">The source of the event.</param> 71
/// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewDeleteEventArgs"/> instance containing the event data.</param> 72
void grid_RowDeleting(object sender, GridViewDeleteEventArgs e) 73
{ 74
string username = (string)gridUsers.DataKeys[e.RowIndex].Value; 75
Membership.DeleteUser(username); 76
string[] roles = Roles.GetRolesForUser(username); 77
Roles.RemoveUserFromRoles(username, roles); 78
Response.Redirect(Request.RawUrl); 79
} 80
81
/// <summary> 82
/// Handles the RowUpdating event of the grid control. 83
/// </summary> 84
/// <param name="sender">The source of the event.</param> 85
/// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewUpdateEventArgs"/> instance containing the event data.</param> 86
void grid_RowUpdating(object sender, GridViewUpdateEventArgs e) 87
{ 88
string username = (string)gridUsers.DataKeys[e.RowIndex].Value; 89
TextBox txtPassword = (TextBox)gridUsers.Rows[e.RowIndex].FindControl("txtPassword"); 90
TextBox txtEmail = (TextBox)gridUsers.Rows[e.RowIndex].FindControl("txtEmail"); 91
TextBox txtUsername = (TextBox)gridUsers.Rows[e.RowIndex].FindControl("txtUsername"); 92
93
MembershipUser oldUser = Membership.GetUser(username); 94
string[] oldRoles = Roles.GetRolesForUser(username); 95
Membership.DeleteUser(username); 96
97
MembershipUser user = Membership.CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text); 98
if (oldRoles.Length > 0) 99
Roles.AddUserToRoles(username, oldRoles); 100
101
if (username != txtUsername.Text) 102
{ 103
UpdatePosts(username, txtUsername.Text); 104
} 105
106
Response.Redirect(Request.RawUrl); 107
} 108
109
private static void UpdatePosts(string oldUsername, string newUsername) 110
{ 111
for (int i = 0; i < Post.Posts.Count; i++) 112
{ 113
Post post = Post.Posts[i]; 114
if (post.Author == oldUsername) 115
{ 116
foreach (Comment comment in post.Comments) 117
{ 118
if (comment.Author == oldUsername) 119
comment.Author = newUsername; 120
} 121
122
post.Author = newUsername; 123
post.Save(); 124
} 125
} 126
} 127
128
/// <summary> 129
/// Handles the RowEditing event of the grid control. 130
/// </summary> 131
/// <param name="sender">The source of the event.</param> 132
/// <param name="e">The <see cref="System.Web.UI.WebControls.GridViewEditEventArgs"/> instance containing the event data.</param> 133
void grid_RowEditing(object sender, GridViewEditEventArgs e) 134
{ 135
gridUsers.EditIndex = e.NewEditIndex; 136
BindGrid(); 137
} 138
139
/// <summary> 140
/// Handles the CreatedUser event of the CreateUserWizard1 control. 141
/// </summary> 142
/// <param name="sender">The source of the event.</param> 143
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 144
void CreateUserWizard1_CreatedUser(object sender, EventArgs e) 145
{ 146
Response.Redirect("users.aspx", true); 147
} 148
149
150
/// <summary> 151
/// Handles the CheckedChanged event of the cb control. 152
/// </summary> 153
/// <param name="sender">The source of the event.</param> 154
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 155
protected void cb_CheckedChanged(object sender, EventArgs e) 156
{ 157
CheckBox cb = (CheckBox)sender; 158
GridViewRow drv = (GridViewRow)cb.Parent.BindingContainer; 159
string _userName = gridUsers.DataKeys[drv.DataItemIndex].Value.ToString(); 160
string _roleToUse = cb.Text; 161
if (cb.Checked == false) 162
{ 163
if (User.Identity.Name != _userName.ToLower()) 164
Roles.RemoveUserFromRole(_userName, _roleToUse); 165
} 166
else 167
{ 168
if (!Roles.IsUserInRole(_userName, _roleToUse)) 169
Roles.AddUserToRole(_userName, _roleToUse); 170
} 171
Response.Redirect("users.aspx", true); 172
} 173
174
/// <summary> 175
/// Handles the Load event of the gridUsers control. 176
/// </summary> 177
/// <param name="sender">The source of the event.</param> 178
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 179
protected void gridUsers_Load(object sender, EventArgs e) 180
{ 181
for (int i = 0; i < gridUsers.Rows.Count; i++) 182
{ 183
string[] allRoles = Roles.GetAllRoles(); 184
foreach (string _role in allRoles) 185
{ 186
CheckBox cb = new CheckBox(); 187
cb.Text = _role; 188
cb.Checked = Roles.IsUserInRole(gridUsers.DataKeys[i].Value.ToString(), _role); 189
cb.AutoPostBack = true; 190
cb.TextAlign = TextAlign.Right; 191
cb.Style.Add("display", "inline"); 192
cb.Style.Add("padding-right", "15px"); 193
cb.CheckedChanged += new EventHandler(cb_CheckedChanged); 194
gridUsers.Rows[i].Cells[4].Controls.Add(cb); 195
} 196
} 197
} 198
} 199





}