對於CheckBoxList控件來說,一方面要實現大量數據在服務器端的綁定工作,另一方面往往要求實現全選、反選等功能。雖然可以在服務器端完成這方面的工作,但這樣一個簡單的工作似乎更應該在客戶端完成。
具體方法:
在頁面中放入一個CheckBoxList控件,並添加幾項,用來分析其產生的HTML代碼,這樣在使用js進行
動態控制時,將會非常清晰其測試代碼如下所示:
復制代碼 代碼如下:
<asp:CheckBoxListID="CheckBoxList1"runat="server"CellPadding="3"CellSpacing="3"
RepeatColumns="3">
<asp:ListItem>1232</asp:ListItem>
<asp:ListItem>254</asp:ListItem>
<asp:ListItemValue="5643">5643</asp:ListItem>
<asp:ListItem>789</asp:ListItem>
<asp:ListItem>654</asp:ListItem>
<asp:ListItem>564</asp:ListItem>
<asp:ListItem>8564</asp:ListItem>
<asp:ListItem>8564</asp:ListItem>
<asp:ListItem>5452</asp:ListItem>
<asp:ListItem>5641</asp:ListItem>
</asp:CheckBoxList>
在浏覽器中查看,並對Html進行分析:以下是DropDownList控件生成的HTML代碼。
復制代碼 代碼如下:
<tableid="CheckBoxList1"cellspacing="3"cellpadding="3"border="0">
<tr>
<td><inputid="CheckBoxList1_0"type="checkbox"name="CheckBoxList1$0"/><labelfor="CheckBoxList1_0">1232</label>
</td>
<td><inputid="CheckBoxList1_4"type="checkbox"name="CheckBoxList1$4"/><labelfor="CheckBoxList1_4">654</label>
</td>
.......
</table>
在這裡,節選了部分代碼,其中藍色部分是我們關心的。在HTML中CheckBoxList生成了
許多input(type為checkbox),並且其ID為“CheckBoxList1_i”(i為數字)。這樣我們只
需要知道一共有幾項就可以輕松的實現js對它的控制。
這些input都包含在一個id為CheckBoxList1的table中,因此可以通過:
復制代碼 代碼如下:
document.getElementById("CheckBoxList1").getElementsByTagName("input").length
這一方法獲取CheckBoxList一共有多少項,剩下的工作其實就很簡單了,通過js更改每一個
checkbox的狀態即可。先添加三個button,用來實現全選、反選及清除控制,如下所示:
復制代碼 代碼如下:
<inputtype="button"onclick="checkAll()"value="checkAll"/>
<inputtype="button"onclick="ReverseAll()"value="ReverseAll"id="Button1"/>
<inputtype="button"onclick="deleteAll()"value="deleteAll"/>
添加全選、反選及清除函數如下:
復制代碼 代碼如下:
functioncheckAll(){
//alert(document.getElementById("CheckBoxList1").getElementsByTagName("input").length);
for(vari=0;i<document.getElementById("CheckBoxList1").getElementsByTagName("input").length;i++)
{
document.getElementById("CheckBoxList1_"+i).checked=true;
}
}
functiondeleteAll(){
for(vari=0;i<document.getElementById("CheckBoxList1").getElementsByTagName("input").length;i++)
{
document.getElementById("CheckBoxList1_"+i).checked=false;
}
}
functionReverseAll(){
for(vari=0;i<document.getElementById("CheckBoxList1").getElementsByTagName("input").length;i++)
{
varobjCheck=document.getElementById("CheckBoxList1_"+i);
if(objCheck.checked)
objCheck.checked=false;
else
objCheck.checked=true;
}
}
OK,現在通過IE測試,綁定工作可以在後台,全選等輔助功能可以自由發揮了!