是这样的,我现在有一组数据如:
□全选 编号 编码 项目名称
□选中 1 1000101 主闸维修
□选中 2 100010101 主闸维修一
□选中 3 100010102 主闸维修二
□选中 4 100010103 主闸维修三
□选中 5 100010104 主闸维修四
我现在想实现的是,点击全选,所有的项目均被选中;点击第一个选中,也就是编码为1000101的那行,我想能让下面的10001开头的都选中,想取消仅仅剩一个维修名称也行
这个用JavaScript和服务器端军事怎么实现?
□全选 编号 编码 项目名称
□选中 1 1000101 主闸维修
□选中 2 100010101 主闸维修一
□选中 3 100010102 主闸维修二
□选中 4 100010103 主闸维修三
□选中 5 100010104 主闸维修四
我现在想实现的是,点击全选,所有的项目均被选中;点击第一个选中,也就是编码为1000101的那行,我想能让下面的10001开头的都选中,想取消仅仅剩一个维修名称也行
这个用JavaScript和服务器端军事怎么实现?
for(var i=0;i<checks.length;++i)
{
if(checks[i].type=="checkbox")checks[i].checked=true;
}
..............
大概这样子
选中状态改变回服务器查找控件全部选中.
protected void cbtSelect_CheckedChanged(object sender, EventArgs e)
{ int intCount = dvList.Rows.Count;
string strItemChildID = "";
string strselectItemID = "";
for (int i = 0; i < intCount; i++)
{
CheckBox cbtSelect = (CheckBox)dvList.Rows[i].FindControl("cbtSelect");
if (cbtSelect.Checked)
{
strItemChildID = dvList.Rows[i].Cells[2].Text.Trim(); //工序编码
if (strItemChildID == " ") strItemChildID = "";
}
}
if(strItemChildID.Replace("&nbsp;", "") !="")
{
string strsql = "select Count(*) from t_RepairItemDetail where ItemID like '" + strItemChildID.Replace("&nbsp;", "") + "%'";
if (Convert.ToInt16(DBHelp.ExecuteScalar(strsql)) > 0)
{ CheckBox cbttSelect = (dvList.FindControl("cbtSelect")) as CheckBox;
strselectItemID = "Declare @Max1 varchar(100) " +
"set @Max1=''" +
" select @Max1=@Max1+ItemID+',' from t_RepairItemDetail where ItemIDParentID = '" + strItemChildID.Replace("&nbsp;", "") + "' order by ItemID " +
" select @Max1"; // strselectItemID = "select ItemID from t_RepairItemDetail where ItemIDParentID = '1000201' order by ItemID";
if (Convert.ToString(DBHelp.ExecuteScalar(strselectItemID)) != null)
{
string strItemIDs = Convert.ToString(DBHelp.ExecuteScalar(strselectItemID));
//Response.Write("<script>alert('"+ strItemIDs +"');</script>");
for (int j = 0; j < intCount; j++)
{
if (strItemIDs.IndexOf(dvList.Rows[j].Cells[2].Text.Replace("&nbsp;", "")) != -1)
{
((CheckBox)dvList.Rows[j].FindControl("cbtSelect")).Checked = true;
}
}
}
}
else if (Convert.ToInt16(DBHelp.ExecuteScalar(strsql)) == 0)
{
CheckBox cbttSelect = (dvList.FindControl("cbtSelect")) as CheckBox;
strselectItemID = "Declare @Max1 varchar(100) set @Max1=''" +
" select @Max1=@Max1+ItemID+',' from t_RepairItemDetail where ItemID = '" + strItemChildID.Replace("&nbsp;", "") + "' order by ItemID select @Max1"; string strItemIDs = Convert.ToString(DBHelp.ExecuteScalar(strselectItemID)); for (int k = 0; k < intCount; k++)
{
if (strItemIDs.IndexOf(dvList.Rows[k].Cells[2].Text.Replace("&nbsp;", "")) != -1)
{
((CheckBox)dvList.Rows[k].FindControl("cbtSelect")).Checked = true;
}
else
{
((CheckBox)dvList.Rows[k].FindControl("cbtSelect")).Checked = false;
}
}
}
}
else
{
for (int k = 0; k < intCount; k++)
{
((CheckBox)dvList.Rows[k].FindControl("cbtSelect")).Checked = false;
} }
}
}
$("#main input[type='checkbox']").each(function(){
this.checked=true;
});
}
<tr>
<th>
<input type="checkbox" id="all" />
</th>
<th>
编号
</th>
<th>
编码
</th>
<th>
项目名称
</th>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox" value="100010" />
</td>
<td>
1
</td>
<td>
1000101
</td>
<td>
主闸维修
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox" value="100010101" />
</td>
<td>
1
</td>
<td>
100010101
</td>
<td>
主闸维修
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox" value="100010102" />
</td>
<td>
2
</td>
<td>
100010102
</td>
<td>
主闸维修
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox" value="100010103" />
</td>
<td>
3
</td>
<td>
100010103
</td>
<td>
主闸维修
</td>
</tr>
<tr>
<td>
<input type="checkbox" name="checkbox" value="100010104" />
</td>
<td>
4
</td>
<td>
100010104
</td>
<td>
主闸维修
</td>
</tr>
</table>
<script type="text/javascript">
var selectAll = document.getElementById("all");
var checkboxes = document.getElementsByName("checkbox");
document.getElementById("tb").onclick = function(e)
{
e = e || window.event;
t = e.target || e.srcElement;
if(t.tagName != "INPUT") return;
if(t.id == "all")
{
for(var i = 0 ; i < checkboxes.length; i ++ ) checkboxes[i].checked = t.checked
}
else
{
var count = 0 ;
for(var i = 0 ; i < checkboxes.length ; i ++)
{
if (t == checkboxes[i]) continue;
if(checkboxes[i].value.indexOf(t.value) != -1) checkboxes[i].checked = t.checked
}
}
}
</script>
1. 待HTML页面加载完成后,所有checkbox不选中。
2. 当勾选“全选”的checkbox时,所有checkbox选中。当不选中其中一个checkbox时,全选checkbox不选中。
选中1000101 截取前5位呗。SubString()然后遍历 取值控件值 -> 判断控件值是否包含10001->是的话勾选->不是的话不处理
$("input [type='checkbox']").attr("checked",$("全选id").attr("checked"));
});
{
var all = document.getElementsByTagName("input");
for (var i=0;i<all.length;i++)
{
if (all[i].type=="checkbox")
{
all[i].checked=t.checked;
}
}
}
调用:
在全选的那个checkbox的onclick事件中
onclick="checkall(this)";
<script type="text/javascript">
function selectAll() {
// 获得用户页面中的所有的 输入功能的控件getElementById("ChkSelect").
var checkbox = document.getElementsByTagName("input");
if (checkbox[0].checked == true) {
for (var i = 0; i < checkbox.length; i++)
checkbox[i].checked = false;
}
else {
for (var i = 0; i < checkbox.length; i++)
checkbox[i].checked = true;
}
} </script>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<tr>
<th scope="col"><input id="Checkbox1" type="checkbox" onclick='selectAll()' /></th>
<th scope="col">Product</th>
<th scope="col">Version</th>
<th scope="col">Description</th>
<th scope="col">No</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td > <asp:CheckBox id='ChkSelect' AutoPostBack="true" runat="server" Text='<%#Eval("ID")%>' oncheckedchanged="ChkSelect_CheckedChanged"/></td>
<td ><%#Eval("Product")%></td>
<td ><%#Eval("Version")%></td>
<td ><%#Eval("Description")%></td>
<td ><asp:Literal ID="lbTest" runat="server" Text='<%#Eval("No")%>'></asp:Literal> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindTest();
}
} public void BindTest()
{
DataTable tblDatas = new DataTable("Datas");
DataColumn dc = null;
dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;// dc = tblDatas.Columns.Add("Product", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Version", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Description", Type.GetType("System.String"));
dc = tblDatas.Columns.Add("No", Type.GetType("System.Int32"));
DataRow newRow;
newRow = tblDatas.NewRow();
newRow["Product"] = "大话西游";
newRow["Version"] = "2.0";
newRow["Description"] = "我很喜欢";
newRow["No"] = "1000101";
tblDatas.Rows.Add(newRow); newRow = tblDatas.NewRow();
newRow["Product"] = "梦幻西游";
newRow["Version"] = "3.0";
newRow["Description"] = "比大话更幼稚";
newRow["No"] = "100010101";
tblDatas.Rows.Add(newRow);
Repeater1.DataSource = tblDatas;
Repeater1.DataBind(); }
protected void ChkSelect_CheckedChanged(object sender, EventArgs e)
{
string ss = string.Empty;
for (int i = 0; i < this.Repeater1.Items.Count; i++)
{
//客户端
CheckBox chb = (CheckBox)this.Repeater1.Items[i].FindControl("ChkSelect");
Literal ltNo = Repeater1.Items[i].FindControl("lbTest") as Literal;
if (chb.Checked == true)
{
ss = ltNo.Text;
}
if (ltNo.Text.Contains(ss))//这里你自己在改成你需要的。
{
chb.Checked = true;
}
}
}
这里用Equals
Equals :
确定此实例是否与另一个指定的 String 对象具有相同的值。
http://msdn.microsoft.com/zh-cn/library/858x0yyx.aspx
代码如下:<asp:GridView ID="dvList" runat="server" AutoGenerateColumns="False"
Width="685px">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="cbtSelectAll" runat="server" Text="全选"/>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="cbtSelect" runat="server" Text="选中" OnCheckedChanged="cbtSelect_CheckedChanged" AutoPostBack="true"/>
</ItemTemplate>
</asp:TemplateField> <asp:BoundField DataField="id" HeaderText="编号"/>
<asp:BoundField DataField="NewItemNode" HeaderText="项目编号"/>
<asp:BoundField DataField="NewItemNodeName" HeaderText="项目编号"/>
<asp:BoundField DataField="ItemStandHours" HeaderText="项目工时"/>
<asp:BoundField DataField="ItemOrder" HeaderText="工序"/>
</Columns>
</asp:GridView>
web服务端控件把onclick改成onclientclick="checkall(this)";