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

简介:         在实际开发中,比如在统一权限管理系统中,我们预先定义了一些列角色,我们点击每一个角色,进入一个应用系统列表,我们要知道每个应用系统中,该角色已经拥有多少菜单访问权限,我们就可以...

        在实际开发中,比如在统一权限管理系统中,我们预先定义了一些列角色,我们点击每一个角色,进入一个应用系统列表,我们要知道每个应用系统中,该角色已经拥有多少菜单访问权限,我们就可以通过Repeater中嵌套Repeater来显示这些信息,如下图所示:


||

||


||

||


主要代码如下:

 <table id="table1" class="grid" singleselect="true">
                <thead>
                    <tr>
                        <td style="width: 40px; text-align: left;">
                            <label id="checkAllOff" onclick="CheckAllLine()" title="全选">
                                 </label>
                        </td>
                        <td style="text-align: center;">应用系统名称
                        </td>
                        <td style="text-align: center;">应用系统地址
                        </td>
                        <td style="text-align: center;">角色权限分配情况
                        </td>
                    </tr>
                </thead>
                <tbody>
                    <asp:Repeater ID="rp_Item" runat="server" OnItemDataBound="rp_Item_ItemDataBound">
                        <ItemTemplate>
                            <tr>
                                <td style="width: 40px; text-align: left;">
                                    <input type="checkbox" value="<%#Eval("System_ID")%>|<%#Eval("System_Name")%>" name="checkbox" />
                                </td>
                                <td style="text-align: center;">
                                    <%#Eval("System_Name")%>
                                </td>
                                <td style="text-align: center;">
                                    <%#Eval("System_Url")%>
                                </td>
                                <td style="text-align: center;">
                                    <asp:Repeater ID="rp_Use" runat="server">
                                        <ItemTemplate>
                                            <%#((AT.Web.ATBase.SysRole.cMsg)Container.DataItem).msg %>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </td>
                            </tr>
                        </ItemTemplate>
                        <FooterTemplate>
                            <% if (rp_Item != null)
                               {
                                   if (rp_Item.Items.Count == 0)
                                   {
                                       Response.Write("<tr><td colspan='4' style='color:red;text-align:center'>没有找到您要的相关数据!</td></tr>");
                                   }
                               } %>
                        </FooterTemplate>
                    </asp:Repeater>
                </tbody>
            </table>

 public string _Roles_Name;
        public string _key;
        private AT_System_IDAO system_idao = new AT_System_Dal();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!base.IsPostBack)
            {
                this._Roles_Name = base.Server.UrlDecode(base.Request["Roles_Name"]);
                this._key = base.Request["key"];
                this.InitData();
            }
        }

        /// <summary>
        /// 初始化绑定列表数据
        /// </summary>
        private void InitData()
        {
            DataTable dt = this.system_idao.GetApplicationList();
            ControlBindHelper.BindRepeaterList(dt, this.rp_Item);
        }

        protected void rp_Item_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rpt2 = (System.Web.UI.WebControls.Repeater)e.Item.FindControl("rp_Use");
                DataRowView rowv = (DataRowView)e.Item.DataItem;//找到外层Repeater关联的数据项  
                string systemId = rowv["System_ID"].ToString();
                DataTable dtList = this.system_idao.GetMenuBindBySystemId(systemId);
                DataTable dtRoleRight = this.system_idao.InitRoleRight(this._key, systemId);
                string msg = "已分配<font color='blue'>" + dtRoleRight.Rows.Count + "</font>/共<font color='red'>" + dtList.Rows.Count + "</font>个菜单!";
                List<cMsg> result = new List<cMsg>();
                cMsg item = new cMsg();
                item.msg = msg;
                result.Add(item);

                if (result != null)
                {
                    rpt2.DataSource = result;
                    rpt2.DataBind();
                }
            }
        }



相关文章
|
8月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
|
3月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
53 2
|
5月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
101 1
|
6月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
5月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
7月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
89 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
8月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
89 0
|
8月前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
|
8月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据