c# - 事件不会在按钮单击时触发
问题描述
我为一个项目做了一个网站,你可以注册。它与 SQL 数据库挂钩。
我正在尝试创建一个页面,管理员可以在其中查看有关不同现有用户的信息,以及删除其中一些用户。
问题是,禁止系统是这样工作的:所有用户都有一个单独的禁止按钮,其 ID 是用户名的 ID,然后,如果管理员想要禁止用户,他点击用户名旁边的禁止按钮,然后是一个事件被触发,并且用户单击的按钮的 ID(如我所说,等于用户名)与查询一起发送,并且具有该用户名的每个用户都被删除。
当我单击由后面的代码生成的按钮之一时,该事件不会触发,但如果我在 HTML aspx 页面中设置一个具有完全相同属性的按钮,它可以完美地工作。
这是我背后的代码:
{
public DbConnector Dbconnector = new DbConnector();
public string htmllist = "";
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] == null) Server.Transfer("logincode.aspx");
if (Session["admin"] == null)
{
Server.Transfer("HomePage.aspx");
}
else
{
DbConnector dbc = new DbConnector();
SqlDataReader reader = dbc.read("SELECT * FROM UsersTable ORDER BY id");
while (reader.Read())
{
htmllist += $"<tr><td class=\"id\">{reader["Id"].ToString()}</td>";
htmllist += $"<td>{reader["Username"].ToString()}</td>";
htmllist += $"<td>{reader["Password"].ToString()}</td>";
htmllist += $"<td class = \"mail\">{reader["Email"].ToString()}</td>";
htmllist += $"<td>{reader["IsAdmin"].ToString()}</td>";
htmllist += $"<td><asp:Button runat=\"server\" name=\"{reader["Username"].ToString()}\" id=\"{reader["Username"].ToString()}\" class=\"btn\" value=\"Remove User\" OnClick=\"BanUser\"/></td></tr>";
htmllist += "<br />";
}
dbc.closeconnection();
}
}
protected void BanUser(object sender, EventArgs e)
{
Button button = (Button)sender;
string buttonid = button.ID;
string banquery = $"DELETE FROM UsersTable WHERE Username = '{buttonid}';";
new DbConnector().ExecuteCRUDQuery(banquery);
}
}
我一直试图解决这个问题几个小时但无济于事。有谁知道我做错了什么?
编辑
我想提一下,我使用了检查元素来确保按钮 ID 设置正确并且它们是正确的。这是关于触发不起作用的事件的事情。
解决方案
1-禁止用户不等于从数据库中删除该用户,因此请考虑您将来可能要撤消。2-您正在为 id 使用字符串数据类型。Id 始终为数字。3-通过 Javascript 或 JQuery 触发事件要容易得多。你为什么不使用它们?4-在您的查询中,您正在设置条件
WHERE Username = '{buttonid}'
你等于 username 到 id ,不应该
WHERE Id = '{buttonid}'
?
推荐阅读
- python - Inverse normalizing data of a dataframe directly
- php - 从 PHP 中的响应对象中检索数据
- django - 我可以装饰 Django REST 框架 ModelViewSet 方法吗?
- c# - asp.net mvc framework 5.2.7 依赖注入FilterProviderCollection.GetFilters错误
- azure - azure 视频分析仪是否可以分析来自 MS 流的视频?
- javascript - 尝试制作 Ticket Bot 但得到 TypeError: channel.updateOverwrite 不是函数
- c++ - Eigen c++ 和 intel mkl 编译错误
- google-chrome - 如何在 background.js 中访问文档/DOM?
- android - 如何让子视图约束尊重 ConstraintLayout 的 maxHeight?
- c++ - 键盘事件未在 sdl 的 cpp 中加载