public class user { public string name { get; set; } public string sex { get; set; } public string age { get; set; } public string sameRecTotal { get; set; } public string sexTotal { get; set; } public string sexDetail { get; set; } }
public List<user> List_Users() { List<user> list = new List<user>(); list.Add(new user() { name = "张三", sex = "男", age = "1" }); list.Add(new user() { name = "李四", sex = "男", age = "3" }); list.Add(new user() { name = "王五", sex = "女", age = "2" }); list.Add(new user() { name = "赵六", sex = "男", age = "7" }); list.Add(new user() { name = "牛七", sex = "女", age = "6" }); list.Add(new user() { name = "马八", sex = "男", age = "4" }); list.Add(new user() { name = "杜十", sex = "男", age = "4" }); list.Add(new user() { name = "张三", sex = "男", age = "70" }); list.Add(new user() { name = "牛七", sex = "女", age = "80" }); return list; }
//总记录数 public int tCount; public List<user> bind_Date(int startRowIndex, int maximumRows, string getSex, string txtSearch) { List<user> tmp = List_Users(); if (!string.IsNullOrEmpty(getSex)) { tmp = tmp .Where(p => p.sex.Equals(getSex)) .ToList(); } if (!string.IsNullOrEmpty(txtSearch)) { tmp = tmp.Where(p => p.name.Contains(txtSearch)).ToList(); } tmp = tmp.GroupBy(a => new { a.name, a.sex }) .Select(g => new user { name = g.Key.name, sex = g.Key.sex, age = g.Select(e => e.age).Aggregate((x, y) => x + "," + y), sameRecTotal = g.Count().ToString(), sexTotal = (from z in List_Users() where z.sex.Equals(g.Key.sex) select z).Count().ToString(), sexDetail = (from i in List_Users() where i.sex.Equals(g.Key.sex) select i.name).Aggregate((x, y) => x + "," + y) }).ToList(); tCount = tmp.Count(); return tmp.Skip(startRowIndex).Take(maximumRows).ToList(); } //总记录数 public int TotalCount(string getSex,string txtSearch) { return tCount; } protected void ListView1_PreRender(object sender, EventArgs e) { } //每次查询定位到首页 protected void ObjectDataSource1_Load(object sender, EventArgs e) { DataPager1.SetPageProperties(0, 2, false); }
前台
<div>
<asp:DropDownList runat="server" ID="ddl_Sex" AutoPostBack="True" Style="margin-bottom: 0px">
<asp:ListItem Value="" Text="全部性别"></asp:ListItem>
<asp:ListItem Value="男" Text="男"></asp:ListItem>
<asp:ListItem Value="女" Text="女"></asp:ListItem>
</asp:DropDownList><asp:TextBox ID="txt_Search" runat="server"></asp:TextBox><asp:Button ID="btn_Search" Text="搜索" runat="server" />
</div>
<asp:ListView ID="ListView1" runat="server" ItemPlaceholderID="tr" DataSourceID="ObjectDataSource1" OnPreRender="ListView1_PreRender">
<LayoutTemplate>
<table border="0" style="">
<tr style="">
<th>name</th>
<th>sex</th>
<th>age</th>
<th>sameRecTotal</th>
<th>sexTotal</th>
<th>sexDetail</th>
</tr>
<tr id="tr" runat="server">
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr style="">
<td><%# Eval("name") %></td>
<td><%# Eval("sex") %></td>
<td><%# Eval("age") %></td>
<td><%# Eval("sameRecTotal") %></td>
<td><%# Eval("sexTotal") %></td>
<td><%# Eval("sexDetail") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" EnablePaging="True" SelectCountMethod="TotalCount" SelectMethod="bind_Date" TypeName="WebApplication1.WebForm1" OnLoad="ObjectDataSource1_Load" OnSelecting="ObjectDataSource1_Selecting">
<SelectParameters>
<asp:ControlParameter ControlID="ddl_Sex" Name="getSex" Type="String" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="txt_Search" Name="txtSearch" Type="String" PropertyName="Text" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:DataPager ID="DataPager1" runat="server" PageSize="2" PagedControlID="ListView1">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" ShowNextPageButton="False" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>