【问题标题】:Save the checked status of a CheckBox included inside an ASP ListView保存 ASP ListView 中包含的 CheckBox 的选中状态
【发布时间】:2012-09-13 23:17:20
【问题描述】:

我知道有关于此问题的类似问题(例如,herehere)但没有任何结果对我的问题有帮助。

我有一个 ListView 控件,显示在数据库中注册的所有用户,如果用户被批准,每个用户都会显示一个 CheckBox,我想在 CheckBox 的 Checked 属性更改时直接保存更改。

我知道在 ListView_ItemDataBound 上添加事件处理程序是不正确的,因为在 CheckBox 的 AutoPostback 之后没有新的绑定,因此事件处理程序会丢失。另一方面,我不能将方法直接附加到 ASPX 文件上,因为这样我就无法知道哪个用户受到更改的影响(至少,我认为我不能)。

有什么建议吗?

非常感谢

【问题讨论】:

    标签: asp.net vb.net listview checkbox addhandler


    【解决方案1】:

    你有几个选择。

    ListView.ItemCommand 事件可能会触发。不过,我不确定,因为文档只指定了按钮。您可能想尝试一下。

    另一个选项是利用ListView.ItemCreated 命令。我相信这始终会运行,无论 ListView 是否绑定,因为始终必须创建项目,即使它来自 ViewState。您在该事件的事件处理程序中要做的是将事件处理程序附加到CheckBox ClickCheckChanged 事件(我忘记了 CheckBox 状态更改事件的服务器端名称是什么)。

    【讨论】:

    • 您的第一种方法似乎行不通。事实上,ListView.ItemCommand 事件不会被抛出,因为CheckBoxCheckedChanged
    • 第二个选项有效!我可以从ListView.ItemCreated 添加处理程序。现在唯一的问题是如何知道哪个用户对应CheckBox(我可以使用Text属性,但它会在屏幕上显示文本,我不希望这样)。
    【解决方案2】:

    所以我遇到了同样的问题。我很好奇,在您的页面加载时,您是否检查它是否是回发?

    if(!Post.IsPostBack){
    //normal page load
    }
    

    如果您没有该检查,它将调用您的页面加载逻辑,在我的情况下,它每次都使用我的数据对象重置复选框。

    【讨论】:

    • 我不明白你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多