您的位置:首页 > 其它

20151224:Web:CheckBoxList 控件:去重显示 ;复选框多选时可点击查询查出结果

2015-12-26 22:36 471 查看
aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Main.aspx.cs" Inherits="Main" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

<br />
<br />
<asp:Label ID="Label1" runat="server" Text="区域:"></asp:Label>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" Text="全选" />
<br />
<asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatDirection="Horizontal">
</asp:CheckBoxList>
<br />
<asp:Label ID="Label2" runat="server" Text="租赁类型:"></asp:Label>
<asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox2_CheckedChanged" Text="全选" />
<br />
<asp:CheckBoxList ID="CheckBoxList2" runat="server" RepeatDirection="Horizontal">
</asp:CheckBoxList>
<br />
<asp:Label ID="Label3" runat="server" Text="房屋类型:"></asp:Label>
<asp:CheckBox ID="CheckBox3" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox3_CheckedChanged" Text="全选" />
<br />
<asp:CheckBoxList ID="CheckBoxList3" runat="server" RepeatDirection="Horizontal">
</asp:CheckBoxList>
<br />
<asp:Label ID="Label4" runat="server" Text="关键字:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<br />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="搜索" />
<br />

<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table width="840" border="0" cellspacing="1" cellpadding="1" bgcolor="#6600FF">
<tr>
<td width="120" height="30" align="center" valign="middle" bgcolor="#FFFFFF"></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF">关键字</td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF">区域</td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF" >使用面积</td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF">租金</td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF">租赁类型</td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF">房屋类型</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF"><a href="Update.aspx?id=<%#Eval("id") %>">编辑</a> <a href="Delete.aspx?id=<%#Eval("id") %>">删除</a></td>
<td width="120" height="30" align="center" valign="middle" bgcolor="#FFFFFF"><%#Eval("KeyWord") %></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF"><%#Eval("Area") %></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF"><%#Eval("SquareMeter") %></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF" ><%#Eval("Rent") %></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF"><%#Eval("RentType") %></td>
<td width="120" align="center" valign="middle" bgcolor="#FFFFFF"><%#Eval("HouseType") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="添加数据" />
</form>
</body>
</html>


cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;

public partial class Main : System.Web.UI.Page
{
private HouseDataContext context = new HouseDataContext();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Repeater1.DataSource = context.House;
Repeater1.DataBind();

//  去重显示 方式一:
var query = context.House;
//通过操作集合去重显示
foreach (House data in query)
{
ListItem item = new ListItem();//造项
item.Text = data.Area;
if (!CheckBoxList1.Items.Contains(item))
{
CheckBoxList1.Items.Add(item);
}
}
foreach (House data in query)
{
ListItem item = new ListItem();//造项
item.Text = data.RentType;
if (!CheckBoxList2.Items.Contains(item))
{
CheckBoxList2.Items.Add(item);
}
}
foreach (House data in query)
{
ListItem item = new ListItem();//造项
item.Text = data.HouseType;
if (!CheckBoxList3.Items.Contains(item))
{
CheckBoxList3.Items.Add(item);
}
}
//去重显示 方式二:
//List<string> list = context.House.Select(p => p.Area).Distinct().ToList();
//foreach (string text in list)
//{
//    ListItem item = new ListItem();
//    item.Text = text;
//    CheckBoxList1.Items.Add(item);
//}
//List<string> listr = context.House.Select(p => p.RentType).Distinct().ToList();
//foreach (string text in listr)
//{
//    ListItem item = new ListItem();
//    item.Text = text;
//    CheckBoxList2.Items.Add(item);
//}
//List<string> listh = context.House.Select(p => p.HouseType).Distinct().ToList();
//foreach (string text in listh)
//{
//    ListItem item = new ListItem();
//    item.Text = text;
//    CheckBoxList3.Items.Add(item);
//}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Insert.aspx");
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckBoxList1.Items)
{
item.Selected = CheckBox1.Checked;
}
}
protected void CheckBox2_CheckedChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckBoxList2.Items)
{
item.Selected = CheckBox2.Checked;
}
}
protected void CheckBox3_CheckedChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckBoxList3.Items)
{
item.Selected = CheckBox3.Checked;
}
}
protected void Button2_Click(object sender, EventArgs e)
{
List<House> list = context.House.ToList();//造集合存放所有的数据
ArrayList listArea = new ArrayList();//造集合
ArrayList listRentType = new ArrayList();
ArrayList listHouseType = new ArrayList();

//第一个查询条件区域Area
if (CheckBoxList1.SelectedIndex >= 0 && !CheckBox1.Checked)//有选中项并且不全选
{
foreach (ListItem item in CheckBoxList1.Items)//取出里面的选中值
{
if (item.Selected)
{ //如果被选中 取出里面的值 并赋给集合
listArea.Add (item.Text);
}
}
list = list.Where(p => listArea.Contains(p.Area)).ToList();//listArea是区域集合 包含这条数据Area的区域
}
//取第二个查询条件租赁类型RentType
if (CheckBoxList2.SelectedIndex >= 0 && !CheckBox2.Checked)
{
foreach (ListItem item in CheckBoxList2.Items)
{
if (item.Selected)
{
listRentType.Add(item.Text);
}
}
list = list.Where(p => listRentType.Contains(p.RentType)).ToList();
}
//取第三个查询条件房屋类型HouseType
if (CheckBoxList3.SelectedIndex >= 0 && !CheckBox3.Checked)
{
foreach (ListItem item in CheckBoxList3.Items)
{
if (item.Selected)
{
listHouseType.Add(item.Text);
}
}
list = list.Where(p => listHouseType.Contains(p.HouseType)).ToList();
}
//取第四个查询条件关键字KeyWord
string keyword = TextBox1.Text;
if(keyword != "")
{
list = list.Where(p => p.KeyWord.Contains(keyword)).ToList();
}

Repeater1.DataSource = list;
Repeater1.DataBind();
}
}


去重显示:



多选查询:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: