js高手请进,高分求解,分不够再加200

阿彪兄 2009-03-17 05:59:13
需求如下:现在要实现TreeView勾选某一个父结点的复选框后,其下所有级的所有子结点都被勾选中,如果该父结点下所有级的所有子结点都被勾选中后该父结点也被勾选中,但如果有没有勾选的话该父结点也不会被勾选上.功能没实现完,请给出完整代码,谢谢
...全文
79 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terry717 2009-03-17
  • 打赏
  • 举报
回复
顶!
泡面之夏 2009-03-17
  • 打赏
  • 举报
回复
没有单独列出,觉得麻烦。
LZ就看自己有用的部分,这是做的权限设置.
和楼主的要求非常吻合。
父类采用的DataList绑定,子类采用的是Repeater绑定。

如果该父结点下所有级的所有子结点都被勾选中后该父结点也被勾选中,但如果有没有勾选的话该父结点也不会被勾选上。
红色部分需要用的数据库,根据具体情况自己设计。

对CheckBox进行了重写,就是加一个Text属性。
ygxdsg119 2009-03-17
  • 打赏
  • 举报
回复
dom
泡面之夏 2009-03-17
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CheckValue;

namespace JNDX.Admin.Admin
{
public partial class UserPower : System.Web.UI.Page
{
private string roleID = "";
AlaDdin.BL.RoleFun RoFo = new AlaDdin.BL.RoleFun();
AlaDdin.Model.Models model=new AlaDdin.Model.Models();
AlaDdin.BL.Models mod = new AlaDdin.BL.Models();
AlaDdin.BL.FunctionInfo Fun = new AlaDdin.BL.FunctionInfo();
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["id"] != null)
{
roleID = Request.QueryString["id"].ToString();
if (!IsPostBack)
{
InitModels();
BindModel();
}

}
}
private void BindModel()
{
DataSet mrp = RoFo.GetList("RoleId=" + roleID);
if (mrp.Tables[0].Rows.Count > 0)
{
foreach (DataListItem di in this.DataList1.Items)
{
myCheck checkAll = (myCheck)di.FindControl("MyCheck1");
Repeater rp = (Repeater)di.FindControl("Repeater1");
if (rp != null)
{
bool state = true;
foreach (RepeaterItem ri in rp.Items)
{

myCheck check = (myCheck)ri.FindControl("MyCheck2");

foreach (DataRow dr in mrp.Tables[0].Rows)
{
if (check.Value == dr["FunId"].ToString())
{
check.Checked = true;
break;
}
else
{
check.Checked = false;
}
}
if (state)
{
state = check.Checked;
}
checkAll.Checked = state;

}
}


}
}
}
private void InitModels()
{
DataSet ds = mod.GetList("");
DataRow dr = ds.Tables[0].NewRow();
dr["Id"] = -1;
dr["ModName"] = "其它";
dr["ModCode"] = "qita";
dr["ModParent"] = 0;
ds.Tables[0].Rows.Add(dr);
if (ds.Tables[0].Rows.Count > 0)
{
this.DataList1.DataSource = ds;
this.DataList1.DataBind();
}
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string pid = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
if (int.Parse(pid) > 0)
{
DataTable dt = Fun.GetFunNameByMid(pid);
if (dt.Rows.Count > 0)
{
Repeater rp = (Repeater)e.Item.FindControl("Repeater1");
if (rp != null)
{
rp.DataSource = dt;
rp.DataBind();
}
}
}
else
{
DataTable dt = Fun.GetFunNameByMid("0");
if (dt.Rows.Count > 0)
{
Repeater rp = (Repeater)e.Item.FindControl("Repeater1");
if (rp != null)
{
rp.DataSource = dt;
rp.DataBind();
}
}

}

}
}

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
AlaDdin.Model.RoleFun rf = new AlaDdin.Model.RoleFun();

if (e.Item.ItemType == ListItemType.Footer)
{
if (e.CommandName == "ok")
{
//先删除再添加//
RoFo.Delete("RoleId=" + roleID);
foreach (DataListItem di in this.DataList1.Items)
{
myCheck checkAll = (myCheck)di.FindControl("MyCheck1");
Repeater rp = (Repeater)di.FindControl("Repeater1");
if (rp != null)
{
//if (checkAll.Checked)
//{//父类绑定//
// string ParentID = checkAll.Value;
// rf.FunId = int.Parse(ParentID);
// rf.RoleId = int.Parse(roleID);
// RoFo.Add(rf);
//}
foreach (RepeaterItem ri in rp.Items)
{//子类绑定//
myCheck check = (myCheck)ri.FindControl("MyCheck2");
if (check != null)
{
if (check.Checked)
{
rf.RoleId = int.Parse(roleID);
rf.FunId = int.Parse(check.Value);
RoFo.Add(rf);
}
}
}
}
}
}
}
}
}
}
泡面之夏 2009-03-17
  • 打赏
  • 举报
回复
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserPower.aspx.cs" Inherits="JNDX.Admin.Admin.UserPower" %>

<%@ Register assembly="CheckValue" namespace="CheckValue" tagprefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>权限设置</title>
<link href="../Css/power.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" language="javascript">
var objs=document.getElementsByTagName("input");
function CheckAll(o)
{
var state=document.getElementById(o).checked;
var str=o.substring(0,o.lastIndexOf("_"));

for(var i=0;i<objs.length;i++)
{
if(objs[i].type.toLowerCase()=="checkbox")
{
var cid=objs[i].id;
if(cid.indexOf(str)!=-1)
{
objs[i].checked=state;
}
}
}
}

function isAll(o)
{
var strMain = o.substring(0,15)+"_MyCheck1";
var str= o.substring(0,15)+"_Repeater1";

for(var i=0;i<objs.length;i++)
{
if(objs[i].type.toLowerCase()=="checkbox")
{
var cid=objs[i].id;
if(cid.indexOf(str)!=-1)
{
if(!objs[i].checked)
{
document.getElementById(strMain).checked=false;
return;
}
document.getElementById(strMain).checked=true;
}
}
}
}
</script>

<style type="text/css">
.style1
{
width: 654px;
}
.style2
{
width: 85px;
}
#form1
{
height: 165px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<table style="height: 165px">
<tr>
<td>
<asp:DataList ID="DataList1" runat="server" DataKeyField="Id" Width="862px"
OnItemDataBound="DataList1_ItemDataBound"
onitemcommand="DataList1_ItemCommand">
<ItemTemplate>
<table>
<tr>
<td class="style2">
<cc1:myCheck ID="MyCheck1" runat="server" onclick="CheckAll(this.id)" Text='<%# Eval("ModName") %> ' Value='<%# Eval("Id") %>' />
</td>
<td>
</td>
</tr>
<tr>
<td class="style2">
</td>
<td class="style1">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<cc1:myCheck ID="MyCheck2" runat="server" onclick="isAll(this.id)" onchange="isAll(this.id)"
Text='<%# Eval("FunName") %>' Value='<%# Eval("Id") %>' /></ItemTemplate>
</asp:Repeater>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate>
<div style="text-align: center">
<asp:Button ID="Button1" runat="server" class="inputbtn2" Text="确 定" CommandName="ok" /><input id="Button2" class="inputbtn2" type="button" onclick="javascript:location.href('RoleList.aspx')" value="返回" /></div>
</FooterTemplate>
</asp:DataList>
</td>
</tr>
</table>
</form>
</body>
</html>

62,268

社区成员

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

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

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

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