保存 ASP 列表视图中包含的复选框的选中状态



我知道关于这个问题有类似的问题(例如,这里和这里),但没有一个结果对我的问题有帮助。

我有一个 ListView 控件,显示数据库中注册的所有用户,并且每个用户都有一个复选框,无论用户是否获得批准,我想在复选框的 Checked 属性更改时直接保存更改。

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

有什么好说的吗?

多谢

你有几个选择。

ListView.ItemCommand事件可能会触发。 不过,我不确定,因为文档只指定按钮。 您可能想要进行实验。

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

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

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

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

在复选框上的 aspx 上 OnCheckedChanged="ckbNameOfCheckbox_CheckedChanged" AutoPostBack="true"

在代码隐藏中

受保护的子ckbNameOfCheckbox_CheckedChanged(发送方作为对象,e 作为事件参数)

    Dim chkBox As CheckBox = CType(sender, CheckBox)
    ' Gets the item that contains the CheckBox object. 
    Dim item As ListViewDataItem = CType(chkBox.Parent, ListViewDataItem)

    NameOfTheListView.UpdateItem(item.DisplayIndex, sender.Checked)
End Sub

相关内容

  • 没有找到相关文章

最新更新