Mark
@Tim
这里是我添加的代码:
public partial class adminonly_approval : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
void DetailsView1_ItemCommand(Object sender, DetailsViewCommandEventArgs e){
if (e.CommandName == "SetToRenter")
{
// if UserID is in second row:
DetailsViewRow row = DetailsView1.Rows[9];
// Get the Username from the appropriate cell.
// In this example, the Username is in the second cell
String UserID = row.Cells[9].Text;
MembershipUser memUser = Membership.GetUser(UserID);
Roles.AddUserToRole(memUser.UserName, "renter");
}
}
我在详细信息视图下方的页面上添加了一个按钮,并将commandName设置为SetToRenter。当我单击按钮时,虽然它没有更改角色。我是ASP和C#的新手,但需要此功能才能完成大学作业。
有想法吗?
#1 楼
Membership.GetUser(UserId)MembershipUser memUser = Membership.GetUser(UserId);
Roles.AddUserToRole(memUser.UserName, "Renter");
Roles.AddUserToRole
这是一个如何获取DetailsView的BoundFields值的示例:
http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.detailsview.itemcommand.aspx
应将Button的CommandName设置为其功能并处理代码背后的DetailsView.ItemCommand事件。在那里,您可以通过以下方式获取用户ID:
void DetailsView1_ItemCommand(Object sender, DetailsViewCommandEventArgs e){
if (e.CommandName == "SetToRenter")
{
// if UserID is in second row:
DetailsViewRow row = DetailsView1.Rows[1];
// Get the Username from the appropriate cell.
// In this example, the Username is in the second cell
String UserID = row.Cells[1].Text;
MembershipUser memUser = Membership.GetUser(UserId);
Roles.AddUserToRole(memUser.UserName, "Renter");
}
}
正如Cem所提到的,您应该设置DetailsView的DataKey属性。然后,您还可以通过以下方式获取当前记录的PK:
// Get the ArrayList objects that represent the key fields
ArrayList keys = (ArrayList)(DetailsView1.DataKey.Values).Keys;
// Get the key field for the current record.
String UserID = keys[0].ToString();
更简单的是DetailsView的快捷方式SelectedValue:
String UserID= DetailsView1.SelectedValue.ToString();
评论
嗨,蒂姆,谢谢您的答复,我看到它是在详细信息视图的UserID字段中获取当前的UsersID而不是一个,我知道该怎么做吗?
–马克
2011年4月4日在21:17
@Mark:不会获取当前用户的UserID。它仅显示了具有UserID时将用户添加到角色的方法。您应该给我们看一些代码,或者告诉我们获得UserID所遇到的问题。
– Tim Schmelter
2011年4月4日在21:20
DataKey也可以工作。我的意思是您不必在DetailsView中找到UserID的单元格。 msdn.microsoft.com/zh-CN/library/…
–cem
2011年4月4日在21:35
@Tim我已将代码添加到我添加的原始帖子中,出现了一些问题。我看到您在cem提到它后添加的其他代码,但是您说得到了PK,但在这种情况下是Accom_ID,而不是UserID
–马克
2011年4月4日在22:18
@Mark:您始终可以使用我的第一种方法,将其复制到问题中。但是您没有提到您遇到的问题。我怀疑它实际上是您的detailsview的第10行中的第10个单元格。我认为这是第十行,但第二个单元格。字符串UserID = row.Cells [1] .Text;
– Tim Schmelter
2011年4月5日在7:13