repeater 控件实现排序
来源:互联网 发布:怎样找软件bug 编辑:程序博客网 时间:2024/05/17 09:30
对于呈现数据库信息的页面表格,我们可以通过repeat、gridview、datalist这三者控件,三者各有优缺点:
repeat控件:呈现速度最快、效率最高、功能最简单。
gridview控件:呈现速度最慢、效率最低、功能最复杂。
datalist控件:介于以上二者之间。
那么,我们到底该如何选择呢?
这其实是要根据实际需要而定的。如果数据库中数据量比较少,那就用gridview。如果数据量比较大,那就用repeat,如果你想实现表格中的一些特别样式(镶嵌控件)而且比较灵活,那就用datalist。
不过,对于本人而言,我喜欢repeat控件,因为我重视简洁、效率。对于datalist控件,我没有怎么用过,所以对其不是很了解,但仍让我比较满意。也就是说我几乎不喜欢用gridview,因为弊端太明显了。在我学习的过程中,大部分老师也是建议能不用gridview就不用(虽然功能强大,实现比较简单)。
对于gridview,它的强大在于能简单实现分页、排序、丰富的格式样式以及易于操作的布局。
对于repeat,以上gridview的大部分功能其实都能实现,只不过实现起来相当复杂些,但我们只要掌握它,那么gridview面对repeat而言,就会变得毫无优势。
那么我今天就来介绍一下如果利用repeat控件实现排序功能。
首先在页面上将repeater控件的行标题添加linkbutton控件,并在repeater控件上添加两个事件方法
页面代码:
(注意:以下页面信息是本人工程项目中的代码,请自行根据情况更改)
<table><asp:RepeaterID="Repeater1" runat="server"OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound"> <HeaderTemplate> <tr> <th> <asp:LinkButtonID="specialtyName" runat="server"CommandName="specialtyName">专业</asp:LinkButton> </th> <th> <asp:LinkButtonID="classId" runat="server"CommandName="classId">班号</asp:LinkButton> </th> <th> <asp:LinkButtonID="className" runat="server"CommandName="className">班级名称</asp:LinkButton> </th> <th> <asp:LinkButtonID="grade" runat="server"CommandName="grade">年级</asp:LinkButton> </th> <th> <asp:LinkButtonID="classNo" runat="server"CommandName="classNo">班级人数</asp:LinkButton> </th> <th> <asp:LinkButtonID="length" runat="server"CommandName="length">学制</asp:LinkButton> </th> <th> <asp:LinkButtonID="assistantId" runat="server"CommandName="assistantId">辅导员号</asp:LinkButton> </th> <th> <asp:LinkButtonID="explain" runat="server"CommandName="explain">备注</asp:LinkButton> </th> <th> <asp:LinkButtonID="action" runat="server"CommandName="action">操作</asp:LinkButton> </th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <%#eval_r("specialtyName")%> </td> <td> <%#eval_r("classId")%> </td> <td> <%#eval_r("className") %> </td> <td> <%#eval_r("grade") %> </td> <td> <%#eval_r("classNo")%> </td> <td> <%#eval_r("length") %> </td> <td> <%#eval_r("assistantId")%> </td> <td> <%#eval_r("explain")%> </td> <td> <ahref="#">删除</a> </td> </tr> </ItemTemplate></asp:Repeater></table>
后台代码:
protectedvoid Page_Load(object sender, EventArgs e) { //这里是将数据库的数据绑定到repeater控件上,由于代码因工程而异,所以就不写了 //绑定返回类型为DataTable dt GetData=dt.DefaultView; } protectedvoid Repeater1_ItemDataBound(object sender, RepeaterItemEventArgse) { if (e.Item.ItemType == ListItemType.Header) { if (ViewState["id"] != null) { LinkButton lkbtnSort =(LinkButton)e.Item.FindControl(ViewState["id"].ToString().Trim()); lkbtnSort.Text = ViewState["text"].ToString(); } } } protectedvoid Repeater1_ItemCommand(object source, RepeaterCommandEventArgse) { if (e.Item.ItemType == ListItemType.Header) { LinkButton lkbtnSort =(LinkButton)e.Item.FindControl(e.CommandName.Trim()); if (ViewState[e.CommandName.Trim()] == null) { ViewState[e.CommandName.Trim()] = "ASC"; lkbtnSort.Text = lkbtnSort.Text + "▲"; } else { if (ViewState[e.CommandName.Trim()].ToString().Trim() =="ASC") { ViewState[e.CommandName.Trim()] = "DESC"; if (lkbtnSort.Text.IndexOf("▲") != -1) lkbtnSort.Text = lkbtnSort.Text.Replace("▲", "▼"); else lkbtnSort.Text = lkbtnSort.Text + "▼"; } else { ViewState[e.CommandName.Trim()] = "ASC"; if (lkbtnSort.Text.IndexOf("▼") != -1) lkbtnSort.Text = lkbtnSort.Text.Trim().Replace("▼", "▲"); else lkbtnSort.Text = lkbtnSort.Text + "▲"; } } ViewState["text"] = lkbtnSort.Text; ViewState["id"] = e.CommandName.Trim(); DataView dv = GetData; dv.Sort = e.CommandName.ToString().Trim() + " " +ViewState[e.CommandName.Trim()].ToString().Trim(); Repeater1.DataSource = dv; Repeater1.DataBind(); } } privateDataView GetData { get { return Cache["_data"] as DataView; } set { Cache["_data"] = value; } }
好了,大功告成,赶紧看看效果吧!
0 0
- repeater控件实现排序
- repeater 控件实现排序
- Repeater控件实现排序
- Repeater控件实现分页
- Repeater控件实现主细表
- repeater控件实现分页
- repeater控件实现分页
- repeater控件实现分页
- repeater控件实现分页
- Repeater控件实现分页代码
- Repeater控件的分页实现
- .NET实现Repeater控件+AspNetPager控件分页
- .NET实现Repeater控件+AspNetPager控件分页
- repeater控件介绍、 repeater嵌套的代码实现
- 如何实现Repeater控件的分页
- Repeater控件分页功能的实现
- Repeater控件嵌套效果的实现
- 实现 DataList 或 Repeater 控件的分页
- 使用Powermock实现单元测试,提高单元测试覆盖率
- JavaScript跨域总结与解决办法
- 第一次写点前言
- 等高瀑布流布局的算法
- Java把class文件打包成jar包
- repeater 控件实现排序
- 编程的细节之美——undefined与null的区别
- Spring MVC 框架 初识 (100%透彻)
- 使用LinearLayout和PullRefreshView实现上下翻页
- 代理模式
- 翻译:HTML5与HTML4的区别
- 老码农教你学英语
- Android 编程下设置 Activity 切换动画
- 蓝色轨迹招聘