对于呈现数据库信息的页面表格,我们可以通过repeat、gridview、datalist这三者控件,三者各有优缺点:
repeat控件:呈现速度最快、效率最高、功能最简单。
gridview控件:呈现速度最慢、效率最低、功能最复杂。
datalist控件:介于以上二者之间。
那么,我们到底该如何选择呢?
这其实是要根据实际需要而定的。如果数据库中数据量比较少,那就用gridview。如果数据量比较大,那就用repeat,如果你想实现表格中的一些特别样式(镶嵌控件)而且比较灵活,那就用datalist。
不过,对于本人而言,我喜欢repeat控件,因为我重视简洁、效率。对于datalist控件,我没有怎么用过,所以对其不是很了解,但仍让我比较满意。也就是说我几乎不喜欢用gridview,因为弊端太明显了。在我学习的过程中,大部分老师也是建议能不用gridview就不用(虽然功能强大,实现比较简单)。
对于gridview,它的强大在于能简单实现分页、排序、丰富的格式样式以及易于操作的布局。
对于repeat,以上gridview的大部分功能其实都能实现,只不过实现起来相当复杂些,但我们只要掌握它,那么gridview面对repeat而言,就会变得毫无优势。
那么我今天就来介绍一下如果利用repeat控件实现排序功能。
首先在页面上将repeater控件的行标题添加linkbutton控件,并在repeater控件上添加两个事件方法
页面代码:
(注意:以下页面信息是本人工程项目中的代码,请自行根据情况更改)
<table>
<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand"
OnItemDataBound="Repeater1_ItemDataBound">
<HeaderTemplate>
<tr>
<th>
<asp:LinkButton ID="specialtyName" runat="server" CommandName="specialtyName">专业</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="classId" runat="server" CommandName="classId">班号</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="className" runat="server" CommandName="className">班级名称</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="grade" runat="server" CommandName="grade">年级</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="classNo" runat="server" CommandName="classNo">班级人数</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="length" runat="server" CommandName="length">学制</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="assistantId" runat="server" CommandName="assistantId">辅导员号</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="explain" runat="server" CommandName="explain">备注</asp:LinkButton>
</th>
<th>
<asp:LinkButton ID="action" runat="server" CommandName="action">操作</asp:LinkButton>
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# eval("specialtyName")%>
</td>
<td>
<%# eval("classId")%>
</td>
<td>
<%# eval("className") %>
</td>
<td>
<%# eval("grade") %>
</td>
<td>
<%# eval("classNo")%>
</td>
<td>
<%# eval("length") %>
</td>
<td>
<%# eval_r("assistantId")%>
</td>
<td>
<%# eval("explain")%>
</td>
<td>
<a href="#">删除</a>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
后台代码:
好了,大功告成,赶紧看看效果吧!