用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();
  }
 }
}

 

Repeater嵌套CheckBoxList ,取值

protected void Button1_Click(object sender, EventArgs e)     {         string role = this.ddl_Role...
  • zhaohongx
  • zhaohongx
  • 2014-09-30 16:28:15
  • 492

RecyclerView与CheckBox结合使用错乱问题

RecyclerView是当前流行的数据视图展示框架 但是,当我们使用RecyclerView与CheckBox结合使用时,碰撞出了勾选错乱的火花 那么接下来我们就来粗暴的解决掉这个小火星 首先,...
  • DANGEROUS_HUI
  • DANGEROUS_HUI
  • 2017-10-24 11:11:02
  • 323

购物车ListView中CheckBox的逻辑处理

最近在做一个项目,在做购物车的时候研究适配器内的CheckBox点击后Activity的数据更新,经过网上查找资料后问题解决,当然,也得感谢一下群里的大神提供了思路。 列表中的CheckBox选中状...
  • zhaowei_zhang
  • zhaowei_zhang
  • 2015-12-18 16:26:12
  • 1136

ASP.NET Repeater嵌套Repeater实现菜单加载

在KS系统中要实现从数据库中读取界面权限文件实现菜单、界面的动态加载。             效果图:                              ASP.NET界面代码  ...
  • gwblue
  • gwblue
  • 2013-11-14 16:02:40
  • 4113

repeater嵌套repeater嵌套

  • 2010年10月21日 14:21
  • 9KB
  • 下载

关于ListView中checkBox选中状态错乱问题的解决办法

PS:提供这两种办法的人都没有解释到底是为什么错乱.下面来尝试分析一下:  1:首先分析下viewHolder.checkBox.setOnCheckedChangeListener(new OnCh...
  • qq_35166847
  • qq_35166847
  • 2016-07-15 20:22:29
  • 1242

Asp.Net Repeater的两层嵌套以及遍历取值的简单实现(checkbox)

第一种嵌套方式:
  • qq_31971935
  • qq_31971935
  • 2016-03-29 17:51:51
  • 877

vs2005中treeview实现树形菜单

 using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Dr...
  • flashlove2008
  • flashlove2008
  • 2007-01-06 13:01:00
  • 1277

Android中的CoordinatorLayout初体验

之前写过一篇关于material design控件的文章《Android中的Toolbar详解》,本篇文章将继续介绍material design中一个最重要的控件CoordinatorLayout。...
  • qq_20521573
  • qq_20521573
  • 2016-09-17 23:39:00
  • 1193
收藏助手
不良信息举报
您举报文章:用repeater嵌套CheckBox+CheckBoxList实现树型选择菜单
举报原因:
原因补充:

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