我看到了很多方法可以循环并检索选中的复选框的值,我需要在复选框列表中选中复选框时立即使用复选框值启动一个过程。不确定是否可行,但如果可行就好了。否则,我必须创建一个极其复杂且低效的程序来检查所有复选框及其与系统中值的关系,我想避免这种情况。到目前为止,我的代码:
我将数据绑定到后台代码中的复选框列表:
首先我从数据库中获取数据:
MyDataSet = GetItems(MyConnection, MyDataSetAssoc.Tables(0).Rows(0)("itemvalue"), MyDataSetPrograms.Tables(0).Rows(0)("Program"))
然后将其绑定到控件:
CheckBoxList_Items.DataSource = MyDataSet
CheckBoxList_Items.DataMember = "Items"
CheckBoxList_Items.DataTextField = "ItemName"
CheckBoxList_Items.DataValueField = "ItemID"
This is the jquery code in the document ready function:
$(document).ready(function() {
$('#<%= CheckBoxList_Items.ClientID %>').click(function() {
if ($(this).is(":checked")) {
alert("ID #" + this.value + " was just checked.");
} else {
alert("ID #" + this.value + " was just unchecked.");
}
});
});
单击列表中的任何复选框时都会执行此操作,现在我需要获取刚刚选中的复选框的值。 this.value
未定义,并且仅执行语句else
的一部分if
,因此这样做不行。有没有办法可以获取刚刚触发此功能的复选框的值?或者我必须使用其他方法?列表中可以有 1 到 N 个项目,当一个复选框被“单击”时,我必须操作三个复选框列表。这个特定的复选框列表位于三个中最低的“级别”。
我正在使用的系统有几个问题。它已有 20 年历史,最初是在 .NET 2.0 下开发的(我相信),现在在 .NET 4.8 下运行。代码本身并没有太大的偏差,感谢 @barmar,我在点击函数中得到了正确的复选框。代码现在显示为:
注意
:checked
函数声明的部分。$(this).val()
代码的一部分正在返回,因为on
复选框列表控件的数据部分未被呈现,因为web.config
文件中有此设置:<pages controlRenderingCompatibilityVersion="3.5">
。我删除了controlRenderingCompatibilityVersion="3.5
标签的一部分,现在正在呈现复选框列表数据并$(this).val()
返回单击列表中复选框的数据值。使用
change
事件而不是click
事件,然后我不知道你的选择器'#<%= CheckBoxList_Items.ClientID %>'
——它看起来像是模板化的东西。如果你将参数e
(即事件)添加到回调函数,你可以通过获取更改的元素e.target
,现在你可以使用获取值/状态e.target.checked
。