如何獲取由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