现在有两个嵌套的datalist,每个datalist中都有一个checkbox,
我想实现这样的效果:
1 . 点击父datalist 中的checkbox 就全选 子datalist 的checkbox
2 . 单击某个全选按钮,就全选两个datalist中所有的checkbox
请问用js如何实现?谢谢
我想实现这样的效果:
1 . 点击父datalist 中的checkbox 就全选 子datalist 的checkbox
2 . 单击某个全选按钮,就全选两个datalist中所有的checkbox
请问用js如何实现?谢谢
解决方案 »
- 请教下,关于书籍
- 正在表达式问题:如何能做到可以匹配数字,但是不匹配1?
- 我们为什么要抛弃使用HTML......
- 如何把数据库中的数据原样输出?
- 几天没上来,怎么我的专家分在不断的减少啊?
- 急求:JavaScript验证方法
- 如何通过asp.net获得一个URL的实际地址?在线等待
- 初学ASP.NET MVC,求推荐书籍
- 请教微软专家:怎样配置服务嚣才能使服务器支正常浏览水晶报表。
- 把一个网站的程序从A服务器放到B服务器上,aspx的动态页面都无法访问是什么原因?该如何解决?求大神指点
- MVC 一个视图显示两张主从表关联信息
- 如何利用 Substring 截取 <%# Eval("val") %>中的字符?
function CheckAll(form)
{
for (var i=0;i<form.elements.length;i++)
{
var e = form.elements[i];
if (e.name != 'checkall' && e.name !='checkbox')
e.checked = form.checkall.checked;
}
}
</script>
=======================================
全选<INPUT id="checkall" onclick="CheckAll(this.form)" type="checkbox" value="on" name="checkall">
function selectAll(chkbox)
{
var box = chkbox;
oState = box.checked;
elem = box.form.elements;
for(i = 0; i < elem.length; i ++)
{
if(elem[i].type == "checkbox" && elem[i].id != box.id)
{
if(elem[i].checked != oState)
{
elem[i].click();
}
}
}
}
</script>
html中的代码如下 <HeaderTemplate>
<asp:CheckBox id="ckb_All" runat="server" onclick="selectAll(this);"></asp:CheckBox>
</HeaderTemplate>
<%@ Import Namespace="System.Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
LoadProductData();
}
} void dlstProCat_ItemDataBound(object sender, DataListItemEventArgs e)
{
DataRowView drv = e.Item.DataItem as DataRowView;
if(drv == null) return; DataRow dr = drv.Row;
DataList dlstPro = e.Item.FindControl("dlstPro") as DataList;
DataView dvPro = dr.Table.ChildRelations["ProCatShip"].ChildTable.DefaultView;
dvPro.RowFilter = "CategoryId = " + dr["CategoryID"].ToString();
dlstPro.DataSource = dvPro;
dlstPro.DataBind();
} void LoadProductData()
{
DataSet ds = CreateProductCategoryDataSet();
dlstProCat.DataSource = ds.Tables["Categories"];
dlstProCat.DataBind();
} #region sample data
static DataSet CreateProductCategoryDataSet()
{
DataSet ds = new DataSet("ProductCategorySet");
DataTable dtPro = CreateProductTable();
DataTable dtCat = CreateCategoryTable();
ds.Tables.Add(dtPro);
ds.Tables.Add(dtCat);
ds.Relations.Add("ProCatShip", dtCat.Columns["CategoryID"], dtPro.Columns["CategoryID"]); return ds;
} static DataTable CreateProductTable()
{
DataTable tbl = new DataTable("Products"); tbl.Columns.Add("ProductID", typeof(int));
tbl.Columns.Add("ProductName", typeof(string));
tbl.Columns.Add("CategoryID", typeof(int));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Chai";
row[2] = 1;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 2;
row[1] = "Chang";
row[2] = 1;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 3;
row[1] = "Aniseed Syrup";
row[2] = 2;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 4;
row[1] = "Chef Anton's Cajun Seasoning";
row[2] = 2;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 5;
row[1] = "Chef Anton's Gumbo Mix";
row[2] = 2;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 47;
row[1] = "Zaanse koeken";
row[2] = 3;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 48;
row[1] = "Chocolade";
row[2] = 3;
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 49;
row[1] = "Maxilaku";
row[2] = 3;
tbl.Rows.Add(row); return tbl;
} public static DataTable CreateCategoryTable()
{
DataTable tbl = new DataTable("Categories"); tbl.Columns.Add("CategoryID", typeof(int));
tbl.Columns.Add("CategoryName", typeof(string));
DataRow row = tbl.NewRow();
row[0] = 1;
row[1] = "Beverages";
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 2;
row[1] = "Condiments";
tbl.Rows.Add(row); row = tbl.NewRow();
row[0] = 3;
row[1] = "Confections";
tbl.Rows.Add(row); return tbl;
} #endregion
</script><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Nested DataList</title>
<script type="text/javascript">
function chkCatPro_Clicked(sender, suredId1, suredId2)
{
var cnt = sender.parentElement.parentElement.parentElement;
var nptArr = cnt.getElementsByTagName("input");
for(var i = 0; i < nptArr.length; i++) {
if(nptArr[i].type == 'checkbox' &&
(nptArr[i].id.indexOf(suredId1) > -1 || nptArr[i].id.indexOf(suredId2) > -1)) {
nptArr[i].checked = sender.checked;
}
}
}
function chkCat_Clicked(sender, suredId)
{
var cnt = sender.parentElement;
var nptArr = cnt.getElementsByTagName("input");
for(var i = 0; i < nptArr.length; i++) {
if(nptArr[i].type == 'checkbox' && nptArr[i].id.indexOf(suredId) > -1) {
nptArr[i].checked = sender.checked;
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="dlstProCat" runat="server" OnItemDataBound="dlstProCat_ItemDataBound">
<HeaderTemplate>
<asp:CheckBox ID="chkCatPro" onclick="chkCatPro_Clicked(this, 'chkCat', 'chkPro')" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkCat" onclick="chkCat_Clicked(this, 'chkPro')" runat="server" />
<asp:Label ID="Label1" runat="server" Text='<%# Eval("CategoryName") %>'></asp:Label>
<div style="padding-left:20px;">
<asp:DataList ID="dlstPro" runat="server" >
<ItemTemplate>
<asp:CheckBox ID="chkPro" runat="server" />
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ProductName") %>'></asp:Label>
</ItemTemplate>
</asp:DataList>
</div>
</ItemTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>