repeater简单应用(嵌套绑定)

摘要:
说到中继器嵌套,它似乎已经存在了很长时间。这个例子是几天前做的。它通过使用三层嵌套来实现。首先,由于客观要求,没有考虑性能问题,所以我们可以看看方法。至于其他人,我们可以自己探索,呵呵。id=“style=”左填充:30px;文本装饰:下划线;“˃1617181920212233。

眼看就要到上班的日子了,希望大家抓住宝贵时间能吃则吃,能乐则乐repeater简单应用(嵌套绑定)第1张
咱还是节省网络资源,进入正题。。

说起repeater嵌套,好像从N久就有了,这个例子是前些日子做的,用了三层嵌套实现有,先说下,因为客观需求,并没有考虑到性能上的问题,所以可以看下其中的方法,至于别的可以自己探索下,呵呵。

功能是要实现一个下拉列表,列表顶层是可以动态设置的年份时间段,第二层则是时间段内具体的年份列表,最内层是每年的信息列表,因为时间问题,就直接用三个repeater来实现了此功能了,从外层向内层根据条件进行逐层绑定,具体的实现如下

先看下HTML:

 1repeater简单应用(嵌套绑定)第2张<asp:Repeater ID="Repeater1" runat="server">
 2repeater简单应用(嵌套绑定)第2张                                                <ItemTemplate>
 3repeater简单应用(嵌套绑定)第2张                                                    <div>
 4repeater简单应用(嵌套绑定)第2张                                                        <span>
 5repeater简单应用(嵌套绑定)第2张                                                            <asp:Literal ID="lblid" runat="server" Text='<%# Eval("history_id") %>' Visible="false"></asp:Literal>
 6repeater简单应用(嵌套绑定)第2张                                                            <asp:Literal ID="lblstart" runat="server" Text='<%# Eval("history_start")%>'></asp:Literal>-<asp:Literal
 7repeater简单应用(嵌套绑定)第2张                                                                ID="lblend" runat="server" Text='<%# Eval("history_end")%>'></asp:Literal>
 8repeater简单应用(嵌套绑定)第2张                                                        </span>
 9repeater简单应用(嵌套绑定)第2张                                                        <asp:Repeater ID="Repeater2" runat="server">
10repeater简单应用(嵌套绑定)第2张                                                            <ItemTemplate>
11repeater简单应用(嵌套绑定)第2张                                                                <p style="color: #000000; margin-left: -20px;">
12repeater简单应用(嵌套绑定)第2张                                                                    <asp:Literal ID="lblyear" runat="server" Text='<%# Eval("his_year") %>'></asp:Literal></p>
13repeater简单应用(嵌套绑定)第2张                                                                <asp:Repeater ID="Repeater3" runat="server">
14repeater简单应用(嵌套绑定)第2张                                                                    <ItemTemplate>
15repeater简单应用(嵌套绑定)第2张                                                                        <a href="history.aspx?id=<%# Eval("his_id") %>" style="padding-left: 30px; text-decoration: underline;">
16repeater简单应用(嵌套绑定)第2张                                                                            <%# Eval("his_title")%></a>
17repeater简单应用(嵌套绑定)第2张                                                                    </ItemTemplate>
18repeater简单应用(嵌套绑定)第2张                                                                </asp:Repeater>
19repeater简单应用(嵌套绑定)第2张                                                            </ItemTemplate>
20repeater简单应用(嵌套绑定)第2张                                                        </asp:Repeater>
21repeater简单应用(嵌套绑定)第2张                                                    </div>
22repeater简单应用(嵌套绑定)第2张                                                </ItemTemplate>
23repeater简单应用(嵌套绑定)第2张                                            </asp:Repeater>

(其实repeater和平常的控件一样,所以别让心理打败就好,呵呵)
此段HTML很简单,三个repeater,每一层都有标识字段(为了进行FindControl),此方法好像是地球人都知道#24,剩下的都是基本数据绑定了,至于内部样式不必去管。

再看下CS文件:

1repeater简单应用(嵌套绑定)第2张   private void HisBind()
2repeater简单应用(嵌套绑定)第26张repeater简单应用(嵌套绑定)第27张    repeater简单应用(嵌套绑定)第28张//绑定左侧外层年段
3repeater简单应用(嵌套绑定)第29张        this.Repeater1.DataSource = his_p_mana.GetList();
4repeater简单应用(嵌套绑定)第29张        this.Repeater1.DataBind();
5repeater简单应用(嵌套绑定)第29张
6repeater简单应用(嵌套绑定)第29张        YearBind(); 
7repeater简单应用(嵌套绑定)第33张    }

这个是最外层的年段列表绑定(简单)。

关键在下面这个方法中:

 1repeater简单应用(嵌套绑定)第2张private void YearBind()
 2repeater简单应用(嵌套绑定)第26张repeater简单应用(嵌套绑定)第27张    repeater简单应用(嵌套绑定)第28张//绑定内部列表
 3repeater简单应用(嵌套绑定)第29张        sqldb sql = new sqldb();
 4repeater简单应用(嵌套绑定)第29张        IList<History_context> years = sql.GetYear();//获取所有年份信息
 5repeater简单应用(嵌套绑定)第29张
 6repeater简单应用(嵌套绑定)第29张        foreach (RepeaterItem item in this.Repeater1.Items)
 7repeater简单应用(嵌套绑定)第42张repeater简单应用(嵌套绑定)第43张        repeater简单应用(嵌套绑定)第28张{
 8repeater简单应用(嵌套绑定)第29张            string pid = (item.FindControl("lblid"as Literal).Text;
 9repeater简单应用(嵌套绑定)第29张            Repeater repyear = item.FindControl("Repeater2"as Repeater;
10repeater简单应用(嵌套绑定)第29张            int start =int.Parse((item.FindControl("lblstart"as Literal).Text);//
11repeater简单应用(嵌套绑定)第29张            int end =int.Parse((item.FindControl("lblend"as Literal).Text);//
12repeater简单应用(嵌套绑定)第29张
13repeater简单应用(嵌套绑定)第29张            List<History_context> newyear = new List<History_context>();//储存临时在绑定信息
14repeater简单应用(嵌套绑定)第29张            for (int i = 0; i < years.Count; i++)
15repeater简单应用(嵌套绑定)第42张repeater简单应用(嵌套绑定)第43张            repeater简单应用(嵌套绑定)第28张{//时间段内的信息
16repeater简单应用(嵌套绑定)第29张                if (years[i].his_year>=start&&years[i].his_year<=end)
17repeater简单应用(嵌套绑定)第42张repeater简单应用(嵌套绑定)第43张                repeater简单应用(嵌套绑定)第28张{
18repeater简单应用(嵌套绑定)第29张                    newyear.Add(years[i]);
19repeater简单应用(嵌套绑定)第60张                }

20repeater简单应用(嵌套绑定)第60张            }

21repeater简单应用(嵌套绑定)第29张            repyear.DataSource = newyear;
22repeater简单应用(嵌套绑定)第29张            repyear.DataBind();
23repeater简单应用(嵌套绑定)第29张
24repeater简单应用(嵌套绑定)第29张            foreach (RepeaterItem rep3 in repyear.Items)
25repeater简单应用(嵌套绑定)第42张repeater简单应用(嵌套绑定)第43张            repeater简单应用(嵌套绑定)第28张{//绑定每年的信息(一年内有多个信息项)
26repeater简单应用(嵌套绑定)第29张                int year = int.Parse((rep3.FindControl("lblyear"as Literal).Text);
27repeater简单应用(嵌套绑定)第29张                Repeater rep = rep3.FindControl("Repeater3"as Repeater;
28repeater简单应用(嵌套绑定)第29张                rep.DataSource = his_c_mana.GetList(0" his_year="+year);
29repeater简单应用(嵌套绑定)第29张                rep.DataBind();
30repeater简单应用(嵌套绑定)第60张            }

31repeater简单应用(嵌套绑定)第33张        }

可以看到此方法中用了多个循环,所以效率肯定不是很好。。
看下功能,首先把所有年份信息查询出来~~信息量不算大,呵呵
遍历最外层的repeater,也就是时间段,通过findcontrol找出标题起始时间与终止时间,以及要进行绑定的第二层repeater,通过遍历刚查询出来的所有年份信息来判断是否在此时间段内,若是,则存储在临时的IList year中,直至循环结束,第二层的数据也就绑定出来了~~

在上面第二层的信息已经查询出来,repyear(第二层)的信息也就存在了,对它进行遍历,查询出内部标识具体年份的临时变量year,通过his_c_mana.GetList方法把这一年的所有信息查询出来并绑定在最内层repeater中。

好像绑定完了,呵呵

还是那句,这个功能只存在逻辑,并没有考虑到性能问题。

免责声明:文章转载自《repeater简单应用(嵌套绑定)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇hbase ERROR: wrong number of arguments (3 for 4)Java中生成唯一ID的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

asp 获取url 返回值 和 对json 返回值的处理

1 Function GetHttpPage(HttpUrl,endoce) 2 If endoce = "" Then endoce = "GB2312" 3 If IsNull(HttpUrl)=True Or Len(HttpUrl)<18 Or HttpUrl="$False$"Then 4 GetHttpPage="$False$"...

XML做数据库操作之 我浑了

只前我看邵志东老师的教程做了一个实例 地址是 http://thcjp.cnblogs.com/archive/2006/05/06/392739.html但是删除的问题始终没有解决,这次做留言本 http://thcjp.cnblogs.com/archive/2006/06/26/435962.html我实在想不到好办法来维护广告控件使用的那个XML文...

SqlServer基础之(触发器)

SqlServer基础之(触发器)  阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器  概念:   触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是...

基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度

http://www.cnblogs.com/bobositlife/p/aspnet-mvc-csharp-quartz-net-timer-task-scheduler.html 在之前的文章《推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler》和《简单、轻量、功能非常强大的C#/ASP.NET...

ASP.NET基础知识整理

Asp.net六大对象 1.Request-->读取客户端在Web请求期间发送的值 常用方法: 1、Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。 (使用全局一般处理程序) 2、Request.UserHostAddress获得访问者的IP地址 3、Reque...

Asp.Net 之 基本控件FileUpload上传控件

1、前台代码: <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" /> <asp:Label ID="LabMsg" runat...