GridView 与 CheckBox相互结合的问题 ,请高手指点一下,急需 请指点指点 javascript高手可能解决这个问题!

我是一只小小小的菜鸟 2009-05-26 08:34:27


GridView 模版 中绑定一个CheckBox控件 ,

GridView 第一列为ID ,第二列为 “编号”;第三列为模版列 绑定CheckBox控件;

第二列的“编号”中 分为 大编号和小编号 比如:编号4,其下面包含 编号4.1、编号4.2、编号4.3、编号4.3.1、编号4.3.2、等这样的编号;
当编号为4的行 的 CheckBox控件 被选定后 那面下面的所有的小编号都被选中,当编号4.3中行的CheckBox控件被选中时 其下面的小编号 编号4.3.1、编号4.3.2、等也被选定 同时 大编号4也被选中。
请问各位高手我应该怎么样实现 请高手指点一下 谢谢啦!
...全文
156 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
aline_winy 2009-05-27
  • 打赏
  • 举报
回复
可以在后台代码中写,从数据库查询的时候,控制checked是否为true.
kay45 2009-05-27
  • 打赏
  • 举报
回复
这是别人教我的, 你参考下吧...

JS:

JScript code
<script language=Javascript>
function checkAll(e, itemName)
{
var aa = document.getElementsByName(itemName);
for (var i=0; i<aa.length; i++)
aa[i].checked = e.checked;
}
function selectOther(obj)
{
var aa = document.getElementsByName(obj);
for(var i=0;i<aa.length;i++)
if(aa[i].type=="checkbox")
{
if(!aa[i].checked)
aa[i].checked=true;
else
aa[i].checked=false;
}
}
</script>





HTML code

<input type=checkbox name=mm value=a><br>
<input type=checkbox name=mm value=b><br>
<input type=checkbox name=mm value=c><br>
<input type=checkbox name=mm value=d><br>
<input type=checkbox name=mm value=e><br><br>
<input type=checkbox name=mmAll onclick="checkAll(this,'mm')">全选与不全选的切换
<input type=checkbox name=mmAll onclick="selectOther('mm')">反选



jiangnanyumixiang 2009-05-27
  • 打赏
  • 举报
回复
没看明白,还是给你顶顶吧
RHCL 2009-05-27
  • 打赏
  • 举报
回复
树?若存在此关系的可以递归实现~~不过,P个图来看下~迷糊~
wenzilj 2009-05-27
  • 打赏
  • 举报
回复
function checkAll(boolValue)
{
var x=document.getElementsByName("xxxx");//根据你选定的编号范围
for(var i=0;i<x.length;i++)
{
if(x[i].type=="checkbox")
x[i].checked=boolValue;
}
}

主要把 节点弄清楚。 我被你大小编号 搞晕了。。!
springbell 2009-05-27
  • 打赏
  • 举报
回复
等待高手
zzwvv8zhang 2009-05-27
  • 打赏
  • 举报
回复
帮顶吧
npy601 2009-05-27
  • 打赏
  • 举报
回复
帮顶一下。
femg93 2009-05-27
  • 打赏
  • 举报
回复
帮顶
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lvjin110 的回复:]
不知道大编号和小编号是否在同一行?还是在不同行?
最好能说明下。
另外,不一定非要用JS吧,C#代码照样可以搞定的。
[/Quote]
不在同一行的 那种。请高手指点下!在哪个事件里面写呢!这个上面没办法发图片!图片的地址:
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 yechangda 的回复:]
GridView控件Render到客户端的Html就是table
CheckBox控件Render到客户端的就是input type=checkbox

该问题不是难在实现,而是如何定义规则

我实现了两种规则,应该还会有如下规则待实现
1. 选中任何一个子节点,则父结点被选中
2. 取消选中所有子节点,则父节点取消选中

算法倒不难,
1. 根据被选中的checkbox的value值,取最后一个"."之前的字符串,然后把属性value=这个字符串的checkbox选中
2. 循环遍…
[/Quote]

高手 写个出来看看 菜鸟拜托你拉!
wwj027 2009-05-27
  • 打赏
  • 举报
回复
真的有点晕
yechd 2009-05-27
  • 打赏
  • 举报
回复
GridView控件Render到客户端的Html就是table
CheckBox控件Render到客户端的就是input type=checkbox

该问题不是难在实现,而是如何定义规则

我实现了两种规则,应该还会有如下规则待实现
1. 选中任何一个子节点,则父结点被选中
2. 取消选中所有子节点,则父节点取消选中

算法倒不难,
1. 根据被选中的checkbox的value值,取最后一个"."之前的字符串,然后把属性value=这个字符串的checkbox选中
2. 循环遍历所有的checkbox,看其子节点的选中状态,如果全为false,则取消选中这个checkbox
冷月孤峰 2009-05-27
  • 打赏
  • 举报
回复
21楼的方法可行,楼主试试
yycc2008 2009-05-27
  • 打赏
  • 举报
回复
有深度
kevinhu520 2009-05-27
  • 打赏
  • 举报
回复
帮顶
yechd 2009-05-27
  • 打赏
  • 举报
回复

<script>
function checkChilds(srcObj)
{
var srcChecked = srcObj.getAttribute("checked");
var srcValue = srcObj.getAttribute("value");
var inputList = document.getElementsByTagName("input");

for (var i = 0; i < inputList.length; i++)
{
var inputObj = inputList[i];
var inputType = inputObj.getAttribute("type");

if ("checkbox" == inputType)
{
var inputValue = inputObj.getAttribute("value");

if (inputValue.indexOf(srcValue) >= 0)
{
if (srcChecked == true)
inputObj.setAttribute("checked", true);
else
inputObj.setAttribute("checked", false);
}
}
}
}
</script>
<table cellpading="2" border="1" borderColor="black" style="width:500px; border:1px solid black; border-collapse:collapse;">
<tr>
<td>ID</td>
<td>编号</td>
<td></td>
</tr>
<tr>
<td></td>
<td>4</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4" /></td>
</tr>
<tr>
<td></td>
<td>4.1</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4.1" /></td>
</tr>
<tr>
<td></td>
<td>4.2</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4.2" /></td>
</tr>
<tr>
<td></td>
<td>4.3</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4.3" /></td>
</tr>
<tr>
<td></td>
<td>4.3.1</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4.3.1" /></td>
</tr>
<tr>
<td></td>
<td>4.3.2</td>
<td><input type="checkbox" onclick="checkChilds(this)" value="4.3.2" /></td>
</tr>
</table>
  • 打赏
  • 举报
回复
上面有图的!
吕津 2009-05-26
  • 打赏
  • 举报
回复
不知道大编号和小编号是否在同一行?还是在不同行?
最好能说明下。
另外,不一定非要用JS吧,C#代码照样可以搞定的。
gongsun 2009-05-26
  • 打赏
  • 举报
回复
js树...
加载更多回复(7)

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧