如何获取复选框列表生成的所有复选框的ID,数据表作为数据源?
我想我必须使用复选框列表中的“OnDataBinding”事件,但我不知道这对我有什么帮助。
我正在使用C#
我不认为获取复选框列表生成的所有复选框的ID是可能的,所以我认为采用moo工具方式是正确的。
有什么想法吗?
由于
答案 0 :(得分:1)
理想情况下,您只想将click事件处理程序附加到domReady事件中的所有复选框列表中,这将使用MooTools创建更简单的函数。但是,如果您愿意,可以将代码保持原样,只需使您的2个功能更简单。
function ToggleSelection(ctrl, sender) {
var checkboxes = $(ctrl).getElements('input[type=checkbox]');
checkboxes.set('checked', sender.checked);
}
function ToggleSelectAll(ctrl, sender) {
var fAllChecked = ($(sender).getElements('input:checked').length == $(sender).getElements('input[type=checkbox]').length)
$(ctrl).set('checked', fAllChecked);
}
您可以一次设置整个ELements数组的属性,不需要循环遍历它们。在第二个函数中,我正在检查检查的元素数量与复选框的总数,如果它们匹配,则意味着它们都被检查。
答案 1 :(得分:0)
您使用的是VB还是C#..请相应标记
您可以拥有名为strchklist
<强> VB.NET 强>
For Each li In CheckBoxList1.Items
If li.Selected Then
strchklist += li.Id
End If
Next
<强> C#强>
foreach (ListItem li in CheckBoxList1.Items){
If li.Selected
strchklist += li.Id ;}
答案 2 :(得分:0)
<asp:ListItem>
实际上不是控件本身,因此没有ID。如果要在客户端脚本中访问它,请添加可以引用的新属性。 (是的,在OnDataBinding期间)请记住,这些不会在ViewState中持久存在!
你到底想要完成什么?可能会有所帮助。
答案 3 :(得分:0)
完全不同的答案......
CheckBoxList有点奇怪......与其他控件不同,它并没有真正具有明显HTML构造的逻辑映射。它实际上呈现了带有衍生ID的多个复选框。这些ID似乎生成为 CheckBoxList.ClientID +“_”+ ItemIndex 。
您可以通过查看页面来源来验证这一点。在内部,似乎单个复选框控件的ID只是它的索引,然后使用CheckBoxList作为其NamingContainer进行渲染。您可以使用Reflector查看CheckBoxList控件如何呈现输出。
仍然是jQuery的好地方。现在你就知道ID了。
答案 4 :(得分:0)
我今天早上醒来并想到这样做(cblUSEquities是一个复选框列表)
cblUSEquities.Attributes.Add("onclick", "javascript:alert('Clicked');");
这会将警报添加到复选框列表生成的表中。需要注意的一点是,警报会显示两次如果我单击复选框的文本,如果单击该复选框则会显示一次。我认为这个解决方案对我有用。
顺便说一下,我从没想过上面的代码会起作用......P.S回答我自己的问题,因为我想写一些代码,我不能使用评论框。
本着StackOverFlow的精神,我找到了适用于我的场景的东西,但问题的描述有所不同?我该怎么办?编辑问题并将其标记为答案?
答案 5 :(得分:0)
我能够通过使用mootools来做到这一点,这就是代码。
function ToggleSelection(ctrl, sender)
{
var cblCtrl = $(ctrl);
var Allcbs = cblCtrl.getElements('input');
for(var i=0; i<Allcbs.length; i++)
Allcbs[i].checked = sender.checked;
}
function ToggleSelectAll(ctrl, sender)
{
var AllTrueCount = 0;
var cblCtrl = $(ctrl);
var Allcbs = sender.getElements('input');
for(var i=0; i<Allcbs.length; i++)
if(Allcbs[i].checked)
AllTrueCount++;
if(AllTrueCount == Allcbs.length)
cblCtrl.checked = true;
else
cblCtrl.checked = false;
}
调用javascript函数的C#代码
//Binding event to the checkbox list
cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID));
//binding event to the select all checkbox
chkAllUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelection('{0}', this);", cblUSEquities.ClientID));
事实证明,我不需要知道复选框列表生成的所有复选框的ID。我能够通过这一行将onclick javascript添加到这些复选框
cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID));
这会将onclick事件添加到复选框列表生成的表中。