Hi asrul,
I have created one sample that full-fill your requirement.
SQL
CREATE PROCEDURE GetDetails
@Year CHAR(4) = NULL
,@Department VARCHAR(20) = NULL
AS
BEGIN
DECLARE @Details AS TABLE(ID INT IDENTITY,FirstName VARCHAR(20),LastName VARCHAR(20),Email VARCHAR(20),Year CHAR(4),Department VARCHAR(20))
INSERT INTO @Details VALUES('John','Hammond','john@live.in','2013','Physics')
INSERT INTO @Details VALUES('Mudassar','Khan','Mudassar@live.in','2014','Chemistry')
INSERT INTO @Details VALUES('Suzanne','Mathews','Suzanne@live.in','2015','Physics')
INSERT INTO @Details VALUES('Robert','Schidner','Robert@live.in','2014','Mathmatics')
INSERT INTO @Details VALUES('John','Hammond','john@live.in','2015','Physics')
INSERT INTO @Details VALUES('Mudassar','Khan','Mudassar@live.in','2013','Mathmatics')
INSERT INTO @Details VALUES('Suzanne','Mathews','Suzanne@live.in','2015','Mathmatics')
INSERT INTO @Details VALUES('Robert','Schidner','Robert@live.in','2013','Chemistry')
SELECT *
FROM @Details
WHERE (Year = @Year OR ISNULL(@Year,'') = '') AND (Department = @Department OR ISNULL(@Department,'') = '')
END
HTML
<div>
<table>
<tr>
<td>
Year
</td>
<td>
<asp:DropDownList ID="ddlYear" runat="server">
<asp:ListItem Text="Select" Value="0" Selected="True" />
<asp:ListItem Text="2013" Value="1" />
<asp:ListItem Text="2014" Value="2" />
<asp:ListItem Text="2015" Value="3" />
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
Department
</td>
<td>
<asp:DropDownList ID="ddlDepartment" runat="server">
<asp:ListItem Text="Select" Value="0" Selected="True" />
<asp:ListItem Text="Physics" Value="1" />
<asp:ListItem Text="Chemistry" Value="2" />
<asp:ListItem Text="Mathmatics" Value="3" />
</asp:DropDownList>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button Text="Get Report" runat="server" ID="btnGetReport" OnClick="GetReport" />
</td>
</tr>
</table>
</div>
<div>
<asp:GridView ID="gvDetails" runat="server" EmptyDataText="No Record To Display.">
</asp:GridView>
</div>
Code
C#
protected void GetReport(object sender, EventArgs e)
{
string conString = ConfigurationManager.ConnectionStrings("conString").ConnectionString;
using (SqlConnection con = new SqlConnection(conString))
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "GetDetails";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
con.Open();
if (int.Parse(ddlYear.SelectedItem.Value) == 0)
cmd.Parameters.AddWithValue("@Year", (object)DBNull.Value);
else
cmd.Parameters.AddWithValue("@Year", this.ddlYear.SelectedItem.Text);
if (int.Parse(ddlDepartment.SelectedItem.Value) == 0)
cmd.Parameters.AddWithValue("@Department", (object)DBNull.Value);
else
cmd.Parameters.AddWithValue("@Department", this.ddlDepartment.SelectedItem.Text);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
this.gvDetails.DataSource = ds;
this.gvDetails.DataBind();
}
}
VB.Net
Protected Sub GetReport(sender As Object, e As EventArgs)
Dim conString As String = ConfigurationManager.ConnectionStrings("conString").ConnectionString
Using con As New SqlConnection(conString)
Dim cmd As New SqlCommand()
cmd.CommandText = "GetDetails"
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = con
con.Open()
If Integer.Parse(ddlYear.SelectedItem.Value) = 0 Then
cmd.Parameters.AddWithValue("@Year", Nothing)
Else
cmd.Parameters.AddWithValue("@Year", Me.ddlYear.SelectedItem.Text)
End If
If Integer.Parse(ddlDepartment.SelectedItem.Value) = 0 Then
cmd.Parameters.AddWithValue("@Department", Nothing)
Else
cmd.Parameters.AddWithValue("@Department", Me.ddlDepartment.SelectedItem.Text)
End If
Dim sda As New SqlDataAdapter(cmd)
Dim ds As New DataSet()
sda.Fill(ds)
Me.gvDetails.DataSource = ds
Me.gvDetails.DataBind()
End Using
End Sub
Screenshot
