我的“JobPost.mdf”中有一个“UserDetail”表。 我有一个“Gridview1”显示来自“UserDetail”表的列,它有一个主键“UserName”。 这个“UserName”最初是使用 Membership 类函数保存的。 现在我向 GridView1 添加一个“删除”链接按钮。这个“删除”不是自动生成按钮,我从工具箱中拖到列项目模板中。 GridView1 的列现在变为“Delete_LinkButton”+“UserName”(在 UserDetail 表中)+“City”(在 UserDetail 表中)+“IsAdmin”(在 UserDetail 表中)
我需要的是,通过单击这个“delete_linkButton”,它只会从“UserDetail”表中删除同一行上的整个用户实体(通过相应的“UserName”链接),以及从中删除所有信息AspNetDB.mdf(用户、成员资格、UserInRole 等)。
我想启动用户确认,但不是强制性的。至少我正在努力使其以正确的方式发挥作用。
for example:
Command UserName City IsAdmin
delete ken Los Angles TRUE
delete jim Toronto FALSE
当我点击第一行的“删除”时,我需要删除“UserDetail”表中关于“ken”的所有记录。同时,AspNetDB.mdf中所有关于“ken”的记录都将消失,包括UserinRole表。
我是 asp.net 的新手,所以我不知道如何将“Delete_LinkButton”的命令参数传递给代码隐藏文件 LinkButton1_Click(object sender, EventArgs e),因为我需要一个额外的参数“UserName” ".
我的部分代码如下:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="Delete_LinkButton" runat="server" onclick="LinkButton1_Click1" CommandArgument='<%# Eval("UserName","{0}") %>'>LinkButton</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
protected void Delete_LinkButton_Click(object sender, EventArgs e)
{
((LinkButton) GridView1.FindControl("Delete_LinkButton")).Attributes.Add("onclick", "'return confirm('Are you sure you want to delete {0} '" + UserName);
Membership.DeleteUser(UserName);
JobPostDataContext db = new JobPostDataContext();
var query = from u in db.UserDetails
where u.UserName == UserName
select u;
for (var Item in query)
{
db.UserDetails.DeleteOnSubmit(Item);
}
db.SubmitChanges();
}
请帮忙!
最佳答案
为了确认,您应该将脚本添加到 OnClientClick
LinkButton 的属性:
<asp:LinkButton
ID="Delete_LinkButton"
runat="server"
onclick="LinkButton1_Click1"
CommandArgument='<%# Eval("UserName","{0}") %>'
OnClientClick='if (!confirm("Are you sure you want to delete <%# Eval("UserName","{0}") %>?")) return false;'
>
LinkButton
</asp:LinkButton>
那个按钮的事件处理程序应该是:
protected void Delete_LinkButton_Click(object sender, EventArgs e)
{
string userName = ((LinkButton)sender).CommandArgument.ToString();
Membership.DeleteUser(UserName);
JobPostDataContext db = new JobPostDataContext();
foreach (var item in db.UserDetails.Where(u => u.UserName == userName))
db.UserDetails.DeleteOnSubmit(Item);
db.SubmitChanges();
}
OnClientClick
属性将您写入的 JavaScript 添加到呈现的 <a/>
的 onclick 属性的开头。标签。所以,如果用户不确认删除,它将返回 false 并且什么都不做。否则,它将执行回发以删除。
在事件处理程序中,sender
始终是发起事件的控件。在这种情况下,LinkButton
.因此,您可以将其转换为 LinkButton
并得到它的 CommandArgument
属性(property),在哪里打UserName
是。
关于c# - 如何在 gridview 中使用 LinkButton 删除代码隐藏文件中的选定用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5430984/