如何在gridview中使用LinkBut​​ton来删除代码隐藏文件中选定的用户名? [英] How to use a LinkButton inside gridview to delete selected username in the code-behind file?

查看:143
本文介绍了如何在gridview中使用LinkBut​​ton来删除代码隐藏文件中选定的用户名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在JobPost.mdf中有一个UserDetail表。
我有一个Gridview1,显示UserDetail表中的列,其中有一个主键UserName。
这个UserName最初是使用Membership类功能保存的。
现在我给GridView1添加一个Delete链接按钮。这个删除不是自动生成按钮,我从ToolBox的列项目模板中拖动。
GridView1的列现在变成了Delete_LinkBut​​ton+UserName(在UserDetail表内)+城市(在UserDetail表内)+IsAdmin(在UserDetail表内)

我需要的是通过点击这个delete_linkBut​​ton,它将只从UserDetail表中删除同一行上的整个用户实体(通过相应的UserName链接),以及删除AspNetDB.mdf(User,Membership,UserInRole等)中的所有信息。



我想要启动一个用户确认,但不是强制性的。至少我试图以正确的方式使它正常运行。

 例如:

命令UserName城市IsAdmin
删除ken Los Angles TRUE
删除jim Toronto FALSE

当我在第一行单击删除,我需要删除UserDetail表中的所有关于ken的记录。同时,AspNetDB.mdf中关于ken的所有记录都将消失,包括UserinRole表。



我是asp.net的新手,所以我没有知道如何将Delete_LinkBut​​ton的命令参数传递给代码隐藏文件LinkBut​​ton1_Click(object sender,EventArgs e),因为我需要一个额外的参数UserName。



我的部分代码如下:

 < asp:TemplateField> 
< ItemTemplate>
< asp:LinkBut​​ton ID =Delete_LinkBut​​tonrunat =serveronclick =LinkBut​​ton1_Click1CommandArgument ='<%#Eval(UserName,{0})%>> LinkBut​​ton< ; / ASP:LinkBut​​ton的>
< / ItemTemplate>
< / asp:TemplateField>


protected void Delete_LinkBut​​ton_Click(object sender,EventArgs e)
{($ LinkBut​​ton)GridView1.FindControl(Delete_LinkBut​​ton))。Attributes.Add( onclick,''return confirm('您确定要删除{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();


}

请帮忙!

解决方案

将脚本添加到LinkBut​​ton的 OnClientClick 属性中:

 < asp:LinkBut​​ton 
ID =Delete_LinkBut​​ton
runat =server
onclick =LinkBut​​ton1_Click1
CommandArgument ='<%#Eval(UserName,{0})%>'
OnClientClick ='if(!confirm(Are您确定要删除<%#Eval(UserName,{0})%> ;?))return false;'
>
LinkBut​​ton
< / asp:LinkBut​​ton>

您的该按钮的事件处理程序应为:

  protected void Delete_LinkBut​​ton_Click(object sender,EventArgs e)
{
string userName =((LinkBut​​ton)sender).CommandArgument.ToString();

Membership.DeleteUser(UserName);
JobPostDataContext db = new JobPostDataContext();

foreach(var在db.UserDetails.Where(u => u.UserName == userName)中的项)
db.UserDetails.DeleteOnSubmit(Item);

db.SubmitChanges();

OnClientClick 属性将您编写的JavaScript添加到呈现的< a /> 标记的onclick属性的起始位置。所以,如果用户没有确认删除,它将返回false并且什么也不做。



在事件处理程序中, sender 总是控制谁发起了这个事件。在这种情况下, LinkBut​​ton 。因此,您可以将它转换为 LinkBut​​ton 并获取它的 CommandArgument 属性,其中tye UserName 是。


I have a "UserDetail" table in my "JobPost.mdf". I have a "Gridview1" showing the column from "UserDetail" table,which has a primary key "UserName". This "UserName" is originally saved using Membership class function. Now I add a "Delete" linkbutton to the GridView1. This "Delete" is not autogenerate button,I dragged inside the column itemtemplate from ToolBox. The GridView1's columns now become "Delete_LinkButton"+"UserName"(within the UserDetail table)+"City"(within the UserDetail table)+"IsAdmin"(within the UserDetail table)

What I need is that by clicking this "delete_linkButton",it will ONLY delete the entire User Entity on the same row (link by the corresponding "UserName") from the "UserDetail" table,as well as delete all information from the AspNetDB.mdf (User,Membership,UserInRole,etc).

I would like to fireup a user confirm,but not mandatory. At least I am trying to make it functional in the correct way.

for example:

Command     UserName    City           IsAdmin
delete           ken       Los Angles          TRUE
delete           jim        Toronto        FALSE

When I click "delete" on the first row, I need all the record about "ken" inside the "UserDetail" table to be removed. Meanwhile, all the record about "ken" in the AspNetDB.mdf will be gone, including UserinRole table.

I am new to asp.net, so I don't know how to pass the commandargument of the "Delete_LinkButton" to the code-behind file LinkButton1_Click(object sender, EventArgs e), because I need one extra parameter "UserName".

My partial code is listed below:

<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();


     }

Please do help!

解决方案

For the confirm, you should add the script to the OnClientClick property of the 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>

And your event handler for that button should be:

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();
}

The OnClientClick property adds the JavaScript you write to it to the beggining of the onclick property of the rendered <a/> tag. So, if the user does not confirm the delete, it will return false and do nothing. Else, it will do the postback to delete.

In the event handler, the sender is always the control who originated the event. In this case, the LinkButton. So, you can cast it to LinkButton and get its CommandArgument property, where tye UserName is.

这篇关于如何在gridview中使用LinkBut​​ton来删除代码隐藏文件中选定的用户名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆