Hi pratikshir,
Refer the below sample code for your reference Where Binding CheckboxList From Database as Dynamically. ChangedEvent also calling dynamically as Per CheckboxList. Refer the below code and try to impliment as Per your logic.
Created some Table from whcih you can Bind CheckBoxList.
SQL
CREATE TABLE ProductBrand (BrandID INT IDENTITY,Brand VARCHAR(15))
INSERT INTO ProductBrand(Brand)
SELECT 'Dell'
UNION ALL
SELECT 'HP'
UNION ALL
SELECT 'Sony'
CREATE TABLE Processor (ProcessorID INT IDENTITY,Processor VARCHAR(15))
INSERT INTO Processor(Processor)
SELECT 'i3'
UNION ALL
SELECT 'i5'
CREATE TABLE Ram (RamID INT IDENTITY,Ram VARCHAR(15))
INSERT INTO Ram(Ram)
SELECT '4GB'
UNION ALL
SELECT '8GB'
CREATE TABLE ScreenSize (ScreenSizeID INT IDENTITY,ScreenSize VARCHAR(15))
INSERT INTO ScreenSize(ScreenSize)
SELECT '15'
CREATE TABLE HardDrive (HardDriveID INT IDENTITY,HardDrive VARCHAR(15))
INSERT INTO HardDrive(HardDrive)
SELECT '1TB'
UNION ALL
SELECT '2TB'
CREATE TABLE SSD (SSDID INT IDENTITY,SSD VARCHAR(15))
INSERT INTO SSD(SSD)
SELECt 'SSD500GB'
UNION ALL
SELECt 'SSD700GB'
UNION ALL
SELECt 'SSD800GB'
UNION ALL
SELECt 'SSD900GB'
CREATE TABLE Product (ProductID INT IDENTITY,BrandId INT,ProcessorId INT,RamId INT,ScreenSizeId INT,HardDriveId INT,SSDId INT)
INSERT INTO Product (BrandId ,ProcessorId ,RamId ,ScreenSizeId ,HardDriveId ,SSDId)
SELECT 1,1,1,1,1,1
UNION ALL
SELECT 1,1,2,1,1,1
UNION ALL
SELECT 1,2,1,1,1,1
UNION ALL
SELECT 1,2,2,1,1,3
UNION ALL
SELECT 1,1,1,1,2,1
UNION ALL
SELECT 1,1,2,1,2,1
UNION ALL
SELECT 1,2,1,1,2,4
UNION ALL
SELECT 1,2,2,1,2,1
UNION ALL
SELECT 2,1,1,1,1,2
UNION ALL
SELECT 2,1,2,1,1,1
UNION ALL
SELECT 2,2,1,1,1,1
UNION ALL
SELECT 2,2,2,1,1,1
UNION ALL
SELECT 2,1,1,1,2,2
UNION ALL
SELECT 2,1,2,1,2,2
UNION ALL
SELECT 2,2,1,1,2,1
UNION ALL
SELECT 2,2,2,1,2,1
UNION ALL
SELECT 3,1,1,1,1,1
UNION ALL
SELECT 3,1,2,1,1,1
UNION ALL
SELECT 3,2,1,1,1,1
UNION ALL
SELECT 3,2,2,1,1,1
UNION ALL
SELECT 3,1,1,1,2,2
UNION ALL
SELECT 3,1,2,1,2,1
UNION ALL
SELECT 3,2,1,1,2,1
UNION ALL
SELECT 3,2,2,1,2,1
StoredProcedure
-- EXEC [dbo].[GetProduct7] 1,null,null,null,null,null
CREATE PROCEDURE [dbo].[GetProduct7]
@BrandIds VARCHAR(100) = NULL
,@ProcessorIds VARCHAR(100) = NULL
,@RamIds VARCHAR(100) = NULL
,@ScreenSizeIds VARCHAR(100) = NULL
,@HardDriveIds VARCHAR(100) = NULL
,@SSDIds VARCHAR(100) = NULL
AS
BEGIN
SELECT P.ProductId
,PB.Brand
,PR.Processor
,R.Ram
,SS.ScreenSize
,HD.HardDrive
,SSD.SSD
FROM Product P
INNER JOIN ProductBrand PB
ON P.BrandId = PB.BrandId
INNER JOIN Processor PR
ON P.ProcessorId = PR.ProcessorId
INNER JOIN Ram R
ON P.RamID = R.RamID
INNER JOIN ScreenSize SS
ON P.ScreenSizeID = SS.ScreenSizeID
INNER JOIN HardDrive HD
ON P.HardDriveID = HD.HardDriveID
INNER JOIN SSD SSD
ON P.SSDID = SSD.SSDID
WHERE (P.BrandId IN(SELECT ITEM FROM dbo.SplitString(@BrandIds, ',')) OR ISNULL(@BrandIds,'') = '')
AND (P.ProcessorId IN(SELECT ITEM FROM dbo.SplitString(@ProcessorIds, ',')) OR ISNULL(@ProcessorIds,'') = '')
AND (P.RamId IN(SELECT ITEM FROM dbo.SplitString(@RamIds, ',')) OR ISNULL(@RamIds,'') = '')
AND (P.ScreenSizeId IN(SELECT ITEM FROM dbo.SplitString(@ScreenSizeIds, ',')) OR ISNULL(@ScreenSizeIds,'') = '')
AND (P.HardDriveId IN(SELECT ITEM FROM dbo.SplitString(@HardDriveIds, ',')) OR ISNULL(@HardDriveIds,'') = '')
AND (P.SSDId IN(SELECT ITEM FROM dbo.SplitString(@SSDIds, ',')) OR ISNULL(@SSDIds,'') = '')
END
Site1.master
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site1.master.cs" Inherits="Site1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td valign="top">
Brand: <asp:CheckBoxList ID="chkBrand" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
<td valign="top">
Ram: <asp:CheckBoxList ID="chkRam" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
<td valign="top">
Processor: <asp:CheckBoxList ID="chkProcessor" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
<td valign="top">
ScreenSize: <asp:CheckBoxList ID="chkScreenSize" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
<td valign="top">
HardDrive: <asp:CheckBoxList ID="chkHardDrive" runat="server" AutoPostBack="true"
OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
<td valign="top">
SSD: <asp:CheckBoxList ID="chkSSD" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Filter_Changed">
</asp:CheckBoxList>
</td>
</tr>
</table>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Site1.Master.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
PopulateCheckBoxList("SELECT Brand,BrandId FROM ProductBrand", "Brand", "BrandID", chkBrand, Brand);
PopulateCheckBoxList("SELECT Processor,ProcessorID FROM Processor", "Processor", "ProcessorID", chkProcessor, Processor);
PopulateCheckBoxList("SELECT Ram,RamID FROM Ram", "Ram", "RamID", chkRam, Ram);
PopulateCheckBoxList("SELECT ScreenSize,ScreenSizeId FROM ScreenSize", "ScreenSize", "ScreenSizeId", chkScreenSize, ScreenSize);
PopulateCheckBoxList("SELECT HardDrive,HardDriveId FROM HardDrive", "HardDrive", "HardDriveId", chkHardDrive, HardDrive);
PopulateCheckBoxList("SELECT SSD,SSDId FROM SSD", "SSD", "SSDId", chkSSD, SSD);
}
}
protected void Filter_Changed(object sender, EventArgs e)
{
switch ((sender as CheckBoxList).ID)
{
case "chkBrand":
Brand = SetFilterValueBasedOnCheckBoxList(chkBrand, (sender as CheckBoxList).ID);
break;
case "chkProcessor":
Processor = SetFilterValueBasedOnCheckBoxList(chkProcessor, (sender as CheckBoxList).ID);
break;
case "chkRam":
Ram = SetFilterValueBasedOnCheckBoxList(chkRam, (sender as CheckBoxList).ID);
break;
case "chkScreenSize":
ScreenSize = SetFilterValueBasedOnCheckBoxList(chkScreenSize, (sender as CheckBoxList).ID);
break;
case "chkHardDrive":
HardDrive = SetFilterValueBasedOnCheckBoxList(chkHardDrive, (sender as CheckBoxList).ID);
break;
case "chkSSD":
SSD = SetFilterValueBasedOnCheckBoxList(chkSSD, (sender as CheckBoxList).ID);
break;
}
this.Response.Redirect(Request.Url.AbsoluteUri);
}
private string SetFilterValueBasedOnCheckBoxList(CheckBoxList chk, string filterValue)
{
string checkedItems = string.Empty;
foreach (ListItem item in chk.Items)
{
if (item.Selected)
{
if (!string.IsNullOrEmpty(checkedItems))
{
checkedItems += ",";
}
checkedItems += item.Value;
}
}
return checkedItems;
}
private void PopulateCheckBoxList(string query, string textColumn, string valueColumn, CheckBoxList chk, string selectedFileteValue)
{
List<ListItem> items = new List<ListItem>();
string constr = ConfigurationManager.ConnectionStrings["Mahavitarak"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand(query);
cmd.Connection = con;
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
ListItem item = new ListItem();
item.Text = sdr[textColumn].ToString();
item.Value = sdr[valueColumn].ToString();
chk.Items.Add(item);
}
con.Close();
if (!string.IsNullOrEmpty(selectedFileteValue))
{
for (int i = 0; i < selectedFileteValue.Split(',').Length; i++)
{
chk.Items.FindByValue(selectedFileteValue.Split(',')[i].ToString()).Selected = true;
}
}
}
public string Brand
{
get
{
return Session["Brand"] != null ? (string)Session["Brand"] : string.Empty;
}
set
{
Session["Brand"] = value;
}
}
public string Processor
{
get
{
return Session["Processor"] != null ? (string)Session["Processor"] : string.Empty;
}
set
{
Session["Processor"] = value;
}
}
public string Ram
{
get
{
return Session["Ram"] != null ? (string)Session["Ram"] : string.Empty;
}
set
{
Session["Ram"] = value;
}
}
public string ScreenSize
{
get
{
return Session["ScreenSize"] != null ? (string)Session["ScreenSize"] : string.Empty;
}
set
{
Session["ScreenSize"] = value;
}
}
public string HardDrive
{
get
{
return Session["HardDrive"] != null ? (string)Session["HardDrive"] : string.Empty;
}
set
{
Session["HardDrive"] = value;
}
}
public string SSD
{
get
{
return Session["SSD"] != null ? (string)Session["SSD"] : string.Empty;
}
set
{
Session["SSD"] = value;
}
}
WebForm6.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.master" AutoEventWireup="true"
CodeFile="WebForm6.aspx.cs" Inherits="WebForm6" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:DataList ID="DataList1" runat="server">
<HeaderTemplate>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<th>
Brand
</th>
<th>
Processor
</th>
<th>
Ram
</th>
<th>
Screen Size
</th>
<th>
HDD
</th>
<th>
SSD
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:Label Visible="false" runat="server" ID="Lbl_ProductID" Text='<%# Eval("ProductID") %>'></asp:Label>
<asp:Label runat="server" ID="Label1" Text='<%# Eval("Brand") %>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Label2" Text='<%# Eval("Processor") %>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Label3" Text='<%# Eval("Ram") %>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Label4" Text='<%# Eval("ScreenSize") %>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Label5" Text='<%# Eval("HardDrive") %>'></asp:Label>
</td>
<td>
<asp:Label runat="server" ID="Label6" Text='<%# Eval("SSD") %>'></asp:Label>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:DataList>
</asp:Content>
WebForm6.aspx.cs
string str = ConfigurationManager.ConnectionStrings["Mahavitarak"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
PopulateProduct();
}
}
private void PopulateProduct()
{
using (SqlConnection con = new SqlConnection(str))
{
using (SqlCommand cmd = new SqlCommand("GetProduct7", con))
{
cmd.CommandType = CommandType.StoredProcedure;
if (!string.IsNullOrEmpty((string)Session["Brand"]))
{
cmd.Parameters.AddWithValue("@BrandIds", (string)Session["Brand"]);
}
if (!string.IsNullOrEmpty((string)Session["Processor"]))
{
cmd.Parameters.AddWithValue("@ProcessorIds", (string)Session["Processor"]);
}
if (!string.IsNullOrEmpty((string)Session["Ram"]))
{
cmd.Parameters.AddWithValue("@RamIds", (string)Session["Ram"]);
}
if (!string.IsNullOrEmpty((string)Session["ScreenSize"]))
{
cmd.Parameters.AddWithValue("@ScreenSizeIds", (string)Session["ScreenSize"]);
}
if (!string.IsNullOrEmpty((string)Session["HardDrive"]))
{
cmd.Parameters.AddWithValue("@HardDriveIds", (string)Session["HardDrive"]);
}
if (!string.IsNullOrEmpty((string)Session["SSD"]))
{
cmd.Parameters.AddWithValue("@SSDIds", (string)Session["SSD"]);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
DataList1.DataSource = ds;
DataList1.DataBind();
}
}
}
ScreenShot