1、当点击Treeview的一个节点时,判断是父节点还是子节点,父节点则将所有的子节点更新
public void getChildState(string sModuleId)
{
TreeView2.SelectedNode.Checked = !TreeView2.SelectedNode.Checked;
string sSql = String.Format(@"select * from sModule where ParentIndex='{0}'", sModuleId);//根据取到得值
DataTable table = BoolDAL.DbHelper.GetDataTable(sSql);
if (table.Rows.Count> 0)
{
foreach (DataRow row in table.Rows)
{
string sMid = row["ModuleId"].ToString();
foreach (TreeNode node in TreeView2.SelectedNode.ChildNodes)
{
if (node.Value == sMid)
{
node.Checked = TreeView2.SelectedNode.Checked;
}
}
}
}
}
调用:
protected void TreeView2_SelectedNodeChanged(object sender, EventArgs e)
{
string sModuleId = TreeView2.SelectedNode.Value;
if (sModuleId == "0")//如果是选中的最上一级,则树上的所有的节点都选中
{
foreach (TreeNode node in TreeView2.Nodes)
{
node.Checked = true;
}
}
else
{
this.getChildState(sModuleId);
}
}
2、根据指定的值取所有信息
public void getState()
{
foreach (TreeNode node in TreeView2.Nodes[0].ChildNodes)//遍历节点
{
node.Checked = false;
//进入子节点
foreach (TreeNode tn in node.ChildNodes)
{
tn.Checked = false;
}
}
string sSql = String.Format(@"select * from [sRolePermission] where RoleId='{0}'", ViewState["roleid"].ToString());
DataTable table = CommClass.GetDataTable(sSql);
string sModuleId = "";
int iPermission = 0;
foreach (DataRow dr in table.Rows)
{
sModuleId = dr["ModuleId"].ToString();
iPermission = int.Parse(dr["Permission"].ToString());
foreach (TreeNode node in TreeView2.Nodes[0].ChildNodes)//遍历节点
{
if (node.Value == sModuleId)//对比数据库的数据
{
node.Checked = (iPermission == 1); //为1的节点选中
}
//进入子节点
foreach (TreeNode tn in node.ChildNodes)
{
if (tn.Value == sModuleId)//对比数据库的数据
{
tn.Checked = (iPermission ==1); //为1的节点选中
}
}
}
}
}
调用:
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
string sID = TreeView1.SelectedNode.Value;
ViewState["roleid"] = sID;
if (ViewState["roleid"] != null)
{
this.getState();
}
//jsFunc.ShowMessage(this.Page, sID);
}