You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中ListView控件Luser触发未处理ItemDeleting事件报错求解

报错原因

你在删除按钮上使用了ASP.NET ListView内置的命令名CommandName="Delete",控件识别到该命令后会自动触发ItemDeleting事件,你未对该事件做绑定处理,因此抛出异常。

解决方案(二选一即可)

方案1:修改为自定义命令名(推荐,操作最简单)

  • 前端把删除按钮的CommandName从Delete改为自定义名称,比如:
<asp:LinkButton ID="DeleteButton" CommandArgument='<%#Eval("User_Id")%>' CommandName="CustomDelete" runat="server">Delete</asp:LinkButton>
  • 后端Luser_ItemCommand方法里的判断条件对应修改:
if (e.CommandName == "CustomDelete")

方案2:保留内置Delete命令,新增ItemDeleting事件处理

  • 在你的ListView控件标签上添加事件绑定属性:
<asp:ListView ID="Luser" runat="server" OnItemDeleting="Luser_ItemDeleting" ......>
  • 后端新增对应事件处理方法,空实现即可阻断报错:
protected void Luser_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
    // 无需额外逻辑,你的删除逻辑已经在ItemCommand中处理
    // 也可以选择把删除逻辑迁移到这个方法内
}
代码优化建议

你当前的删除逻辑不需要额外查找控件拿参数,可以直接通过事件参数获取CommandArgument,简化代码:

protected void Luser_ItemCommand(object sender, ListViewCommandEventArgs e)
{
    if (e.CommandName == "CustomDelete") // 对应你使用的命令名
    {
        int userId = Convert.ToInt32(e.CommandArgument);
        User ue = db.Users.First(x => x.User_Id == userId);
        ue.Delete_record = "Yes";
        db.SubmitChanges();
        preload();
        StMsg("Yes", "Record deleted succesfully");
    }
}

内容的提问来源于stack exchange,提问作者Syeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:09:02