Hi dhivya,
I have created a small sample. Refer the below sample code.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CssClass="grid"
AllowPaging="true">
<Columns>
<asp:BoundField HeaderText="Contact Name" DataField="ContactName" />
<asp:TemplateField>
<HeaderTemplate>
<asp:ListBox ID="lstCountries" runat="server" SelectionMode="Multiple">
<asp:ListItem Text="Argentina" Value="Argentina"></asp:ListItem>
<asp:ListItem Text="Austria" Value="Austria"></asp:ListItem>
<asp:ListItem Text="Belgium" Value="Belgium"></asp:ListItem>
<asp:ListItem Text="Brazil" Value="Brazil"></asp:ListItem>
<asp:ListItem Text="Canada" Value="Canada"></asp:ListItem>
</asp:ListBox>
<asp:Button Text="Filter" runat="server" OnClick="Country_Changed" />
</HeaderTemplate>
<ItemTemplate>
<%# Eval("Country") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.min.css" />
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/css/bootstrap-multiselect.css" />
<script type="text/javascript" src="http://cdn.rawgit.com/davidstutz/bootstrap-multiselect/master/dist/js/bootstrap-multiselect.js"></script>
<script type="text/javascript">
$(function () {
$('[id*=lstCountries]').multiselect({ includeSelectAllOption: true });
});
</script>
</div>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindGrid();
}
}
private void BindGrid()
{
string query = "SELECT ContactName, Country FROM Customers";
GridView1.DataSource = GetDataTable(query);
GridView1.DataBind();
}
protected void Country_Changed(object sender, EventArgs e)
{
string query = "SELECT ContactName, Country FROM Customers";
Button btn = (Button)sender;
string condition = string.Empty;
foreach (ListItem item in (btn.FindControl("lstCountries") as ListBox).Items)
{
condition += item.Selected ? string.Format("'{0}',", item.Value) : "";
}
if (!string.IsNullOrEmpty(condition))
{
condition = string.Format(" WHERE Country IN ({0})", condition.Substring(0, condition.Length - 1));
}
GridView1.DataSource = GetDataTable(query + condition);
GridView1.DataBind();
}
private DataTable GetDataTable(string query)
{
string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand(query))
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
cmd.Connection = con;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Me.BindGrid()
End If
End Sub
Private Sub BindGrid()
Dim query As String = "SELECT ContactName, Country FROM Customers"
GridView1.DataSource = GetDataTable(query)
GridView1.DataBind()
End Sub
Protected Sub Country_Changed(sender As Object, e As EventArgs)
Dim query As String = "SELECT ContactName, Country FROM Customers"
Dim btn As Button = DirectCast(sender, Button)
Dim condition As String = String.Empty
For Each item As ListItem In TryCast(btn.FindControl("lstCountries"), ListBox).Items
condition += If(item.Selected, String.Format("'{0}',", item.Value), "")
Next
If Not String.IsNullOrEmpty(condition) Then
condition = String.Format(" WHERE Country IN ({0})", condition.Substring(0, condition.Length - 1))
End If
GridView1.DataSource = GetDataTable(query & condition)
GridView1.DataBind()
End Sub
Private Function GetDataTable(query As String) As DataTable
Dim conString As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As New SqlConnection(conString)
Using cmd As New SqlCommand(query)
Using sda As New SqlDataAdapter(cmd)
cmd.Connection = con
Using dt As New DataTable()
sda.Fill(dt)
Return dt
End Using
End Using
End Using
End Using
End Function
Screenshot