如何获取由checkboxlist生成的所有复选框的id,并将datatable作为其数据源?Checkboxlist +获取所有复选框的ID
我想我必须使用复选框列表中的“OnDataBinding”事件,但我不明白这对我有何帮助。
我使用C#
我不认为获得通过的复选框列表中产生的所有复选框的ID是可能的,所以我觉得要も工具的方法是做正确的事。
任何想法?
感谢
如何获取由checkboxlist生成的所有复选框的id,并将datatable作为其数据源?Checkboxlist +获取所有复选框的ID
我想我必须使用复选框列表中的“OnDataBinding”事件,但我不明白这对我有何帮助。
我使用C#
我不认为获得通过的复选框列表中产生的所有复选框的ID是可能的,所以我觉得要も工具的方法是做正确的事。
任何想法?
感谢
理想情况下,您只需要将点击事件处理程序附加到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数组的属性,不需要遍历它们。在第二个函数中,我将检查检查的元素的数量与复选框的总数,如果它们匹配,则表示它们全部被检查。
您是否使用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 ;}
<asp:ListItem>
不是一个真正的控件本身,因此没有ID。如果您想在客户端脚本中访问它,请添加您可以引用的新属性。 (是的,在OnDataBinding期间)请记住,这些不会保留在ViewState中!
你究竟想完成什么?可能会有所帮助。
完全不同的答案......
的CheckBoxList的是一个有点古怪的家伙......不同于其他控件,它并没有真正有一个逻辑映射到一个明显的HTML结构。它实际上使用派生ID呈现多个复选框。这些ID似乎产生为CheckBoxList.ClientID + “_” + 项目索引。
您可以通过查看页面源来验证这一点。在内部,似乎单个复选框控件的ID只是其索引,然后使用CheckBoxList作为它的NamingContainer呈现它。您可以使用Reflector查看CheckBoxList控件如何呈现输出。
仍然是jQuery的好去处。现在你更容易知道这些ID。
今天早晨我和这样的思想(cblUSEquities是一个复选框列表)
cblUSEquities.Attributes.Add("onclick", "javascript:alert('Clicked');");
此选项将在复选框列表生成警报表中醒了过来。有一点需要注意的是,警报会显示两次如果我单击复选框的文本,并单击复选框一次。我认为这个解决方案适用于我。
顺便说一句,我从来没有想过上面的代码会工作...
P.S回答我自己的问题,因为我想写一些代码,我不能使用评论框。
本着StackOverFlow的精神,我到达了一种适用于我的场景的东西,但问题的描述是不同的?我该怎么办?编辑问题并将其标记为答案?
我能够通过使用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;
}
C#代码事实证明我并不需要知道复选框列表中产生的所有复选框的id的这调用JavaScript函数
//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));
。我可以通过这条线
cblUSEquities.Attributes.Add("onclick", string.Format("javascript:ToggleSelectAll('{0}', this);", chkAllUSEquities.ClientID));
这将onclick事件添加到复选框列表生成表的onclick的javascript添加到这些复选框。
这绝对好得多。谢谢 – iJK 2009-10-30 17:27:50