【转贴】ListView控件学习系列3-ListView选择,排序,分页
本文介绍了如何使用ListView控件的选择,排序,分页功能。
【转贴】ListView控件学习系列3-ListView选择,排序,分页
作者:Lance
原贴地址:http://www.cnblogs.com/nuaalfm/archive/2008/09/02/1282437.html
目录:
ListView控件学习系列3-ListView选择,排序,分页
选择例子
前端代码:


<asp:ListView ID="ListView1" runat="server"
onselectedindexchanging="ListView1_SelectedIndexChanging">
<LayoutTemplate>
<table id="Table1" runat="server" border="0" style="">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("ID") %>
</td>
<td>
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
</td>
<td>
<asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
</td>
<td>
<asp:Button ID="SelectButton" CommandName="Select" runat="server" Text="选择" />
</td>
</tr>
</ItemTemplate>
<SelectedItemTemplate>
<tr style="background-color:Blue">
<td>
<%#Eval("ID") %>
</td>
<td>
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
</td>
<td>
<asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
</td>
<td>
<asp:Button ID="SelectButton" CommandName="Select" runat="server" Text="选择" />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
后台代码:


protected void ListView1_SelectedIndexChanging(object sender, ListViewSelectEventArgs e)
{
ListView1.SelectedIndex = e.NewSelectedIndex;
Bind();
}
排序前端代码:


<asp:ListView ID="ListView1" runat="server" OnSorting="ListView1_Sorting">
<LayoutTemplate>
<table id="Table1" runat="server" border="0" style="">
<tr>
<td>
<asp:LinkButton ID="LinkButton1" CommandArgument="ID" runat="server" CommandName="Sort">ID</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="LinkButton2" CommandArgument="Name" runat="server" CommandName="Sort">Name</asp:LinkButton>
</td>
<td>
<asp:LinkButton ID="LinkButton3" CommandArgument="Age" runat="server" CommandName="Sort">Age</asp:LinkButton>
</td>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("ID") %>
</td>
<td>
<%# Eval("name") %>
</td>
<td>
<%# Eval("age") %>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
排序模拟数据提供代码:


namespace Data
{
/// <summary>
///DataAccess 的摘要说明
/// </summary>
public class DataAccess
{
public List<Employee> List;
public DataAccess()
{
List = new List<Employee>();
Employee e1 = new Employee { ID = 1, Name = "A", Age = 10 };
Employee e2 = new Employee { ID = 3, Name = "M", Age = 30 };
Employee e3 = new Employee { ID = 2, Name = "B", Age = 40 };
Employee e4 = new Employee { ID = 4, Name = "S", Age = 19 };
Employee e5 = new Employee { ID = 6, Name = "X", Age = 18 };
Employee e6 = new Employee { ID = 5, Name = "W", Age = 20 };
List.Add(e1);
List.Add(e2);
List.Add(e3);
List.Add(e4);
List.Add(e5);
List.Add(e6);
}
public void SortID( string sortDirection)
{
if (sortDirection == "ASC")
{
List.Sort(new EmployeeIDAscCompare());
}
else
{
List.Sort(new EmployeeIDDescCompare());
}
}
}
class EmployeeIDAscCompare:IComparer<Employee>
{
#region IComparer<Employee> 成员
public int Compare(Employee x, Employee y)
{
return x.ID.CompareTo(y.ID);
}
#endregion
}
class EmployeeIDDescCompare : IComparer<Employee>
{
#region IComparer<Employee> 成员
public int Compare(Employee x, Employee y)
{
return y.ID.CompareTo(x.ID);
}
#endregion
}
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public int Sex { get; set; }
}
}
排序后台代码:


public partial class Default3 : System.Web.UI.Page
{
DataAccess da;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["da"] == null)
{
da = new DataAccess();
Session["da"] = da;
}
else
{
da = Session["da"] as DataAccess;
}
if (!IsPostBack)
{
Bind();
}
}
private void Bind()
{
ListView1.DataSource = da.List;
ListView1.DataBind();
}
protected void ListView1_Sorting(object sender, ListViewSortEventArgs e)
{
if (String.IsNullOrEmpty(e.SortExpression)) { return; }
string direction = "";
if (ViewState["SortDirection"] != null)
direction = ViewState["SortDirection"].ToString();
if (direction == "ASC")
direction = "DESC";
else
direction = "ASC";
ViewState["SortDirection"] = direction;
da.SortID(direction);
Bind();
}
}
分页例子:
前端代码:


<asp:ListView ID="ListView1" runat="server" OnPagePropertiesChanging="ListView1_PagePropertiesChanging1">
<LayoutTemplate>
<table id="Table1" runat="server" border="0" style="">
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("ID") %>
</td>
<td>
<%# Eval("name") %>
</td>
<td>
<%# Eval("age") %>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</div>
<div style="padding: 10px; text-align: right;">
<asp:DataPager ID="Pager" runat="server" PagedControlID="ListView1" PageSize="2">
<Fields>
<asp:NumericPagerField ButtonCount="10" NextPageText="" PreviousPageText="" />
<asp:NextPreviousPagerField FirstPageText="First" LastPageText="Last" NextPageText="Next"
PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
</div>
后台代码:


protected void ListView1_PagePropertiesChanging1(object sender, PagePropertiesChangingEventArgs e)
{
Pager.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
Bind();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述