用repeater嵌套CheckBox+CheckBoxList实现树型选择菜单

原创 2007年10月11日 21:30:00

页面:
<HTML>
 <body>
  <form id="Form1" runat="server">
   <asp:repeater id="parentRepeater" runat="server">
    <itemtemplate>
     <b>
      <asp:CheckBox id="CheckBoxRole" Text='<%# DataBinder.Eval(Container.DataItem,"RoleId") %>' runat="server" AutoPostBack="True" OnCheckedChanged="CheckBoxRole_CheckedChanged">
      </asp:CheckBox>
      <asp:CheckBoxList id="CheckBoxListUserId" Runat="server" DataValueField="RoleId"></asp:CheckBoxList>
     </b>
     <br>
    </itemtemplate>
   </asp:repeater>
  </form>
 </body>
</HTML>

后台代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace center
{
 /// <summary>
 /// NestedRepeater 的摘要说明。
 /// </summary>
 public class NestedRepeater : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Repeater parentRepeater;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    // 在此处放置用户代码以初始化页面
    // 为Authors表创建 Connection 和 DataAdapter
    string cnnString = @"server=azure;database=CnForums;uid=sa;pwd=;";
    SqlConnection cnn = new SqlConnection(cnnString);
    SqlDataAdapter cmd1 = new SqlDataAdapter("select * from aspnet_Roles",cnn);
  
    //创建填充 DataSet.
    DataSet ds = new DataSet();
    cmd1.Fill(ds,"Roles");
  
    // 为Titles表创建 DataAdapter
    SqlDataAdapter cmd2 = new SqlDataAdapter("select * from aspnet_UsersInRoles",cnn);
    cmd2.Fill(ds,"Users");
  
    // 创建 Authors 表和 Titles 表之间的关系.
    ds.Relations.Add("myrelation",
    ds.Tables["Roles"].Columns["RoleId"],
    ds.Tables["Users"].Columns["RoleId"]);
  
    // 绑定Authors到父Repeater
    parentRepeater.DataSource = ds.Tables["Roles"];
    Page.DataBind();

    cnn.Close();
    cnn.Dispose();
   }
  }

Web 窗体设计器生成的代码

  public void CheckBoxRole_CheckedChanged(object sender, System.EventArgs e)
  {
   for(int i=0;i<this.parentRepeater.Items.Count;i++)
   {
    CheckBox cb = (CheckBox)parentRepeater.Items[i].FindControl("CheckBoxRole");
    CheckBoxList cbl = (CheckBoxList)parentRepeater.Items[i].FindControl("CheckBoxListUserId");
    if (cb.Checked==true)
    {
     cbl.Visible=true;
    }
    if (cb.Checked==false)
    {
     cbl.Visible=false;
    }
   }
  }

  private void parentRepeater_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
  {
   string cnnString = @"server=azure;database=CnForums;uid=sa;pwd=;";
   SqlConnection cnn = new SqlConnection(cnnString);
   SqlDataAdapter cmd1 = new SqlDataAdapter("select * from aspnet_Roles",cnn);
   //创建填充 DataSet.
   DataSet ds = new DataSet();
   cmd1.Fill(ds,"Roles");
   //绑定checkboxlist
   CheckBoxList cb=(CheckBoxList)e.Item.FindControl("CheckBoxListUserId");
   DataRowView row=(DataRowView)e.Item.DataItem;
   string root=row["RoleId"].ToString();
   cb.DataSource=ds;
   cb.DataTextField="RoleId";
   cb.DataValueField="RoleId";
   cb.DataBind();
  }
 }
}

 

简单的 ul li 树形菜单

简单的 ul li 树形菜单在实际开发中,我们经常遇到树形菜单,闲暇之余,特此简单研究了一下,欢迎吐槽!前言 所谓的树形菜单,无非就是 ul li的嵌套使用,如果有两级目录,就需要在li里再嵌套一...
  • u011613356
  • u011613356
  • 2015年11月12日 15:36
  • 2289

asp.net中Repeater中嵌套Repeater来显示跟外层Repeater数据相关的其他信息

在实际开发中,比如在统一权限管理系统中,我们预先定义了一些列角色,我们点击每一个角色,进入一个应用系统列表,我们要知道每个应用系统中,该角色已经拥有多少菜单访问权限,我们就可以通过Repeater中嵌...
  • taomanman
  • taomanman
  • 2015年07月03日 16:38
  • 1824

jquery+css+html无限级tree树形菜单(含复选框)

jquery使用,tree树形目录结构,无限级树形目录
  • sinat_31016743
  • sinat_31016743
  • 2017年03月28日 19:06
  • 5091

自定义类 无极限树形结构菜单(繁杂版)

注意: 主要是理解形成树形菜单的思路,并不是粘贴就可以用的。   返回数据(如:效果图)到页面后,通过js做递归调用处理就好了。 树形菜单基础类: TreeGridCategory.java pu...
  • caidimin
  • caidimin
  • 2015年12月26日 15:19
  • 4882

js实现一个简单的树形菜单

在做练习的时候做到这个,想想觉得常常会用到,就做了下。看了下给的代码,晕了,小白菜看这种代码会晕的啊~~书的题目是《精通HTML5+CSS3+JavaScript网页设计》,小白拿来做练习,在这里吐槽...
  • woshixkl
  • woshixkl
  • 2016年07月22日 14:23
  • 3076

php无限分类与树形菜单

  • dengfei00100
  • dengfei00100
  • 2016年12月22日 17:52
  • 1647

jquery+css实现html选择树或树形菜单

本文将介绍利用jquery+css实现html选择树或树形菜单的方法,无需其他插件,十分简洁明了。 主要利用标签加上样式调整。 先上效果图: 下面上CSS代码: li{ ...
  • listmana
  • listmana
  • 2016年09月03日 15:20
  • 8239

angularjs--制作树形菜单

效果图 数据源 /* Controllers */ function ctrDataList($scope) { $scope.ctrDataList_list = [ { "title"...
  • qianqianyixiao1
  • qianqianyixiao1
  • 2016年01月15日 17:40
  • 5200

使用Jquery+bootstrap无限级菜单树

无限级菜单树的实现效果从数据库提取出来的原始数据前台代码需要的数据{ "code": 100, "extend": { "children": [ ...
  • EnTaroAdunZ
  • EnTaroAdunZ
  • 2017年08月10日 00:43
  • 730

Angular中实现树形结构视图

近两年当中使用Angular开发过很多项目,其中也涉及到一些树形结构的显示,最近的在项目中封装了大量的组件,其中一些组件也涉及到树形结构,所以写出来总结一下。 相信大家都知道,树结构最典型的例子就是目...
  • liuhe688
  • liuhe688
  • 2016年03月23日 21:41
  • 14108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用repeater嵌套CheckBox+CheckBoxList实现树型选择菜单
举报原因:
原因补充:

(最多只允许输入30个字)