title: How to filter a grid view according to the drop down list values
body: <p>Q: I have set of <code>dropdownlists</code> which used to filter the data in my <code>grid view</code>. So, on <code>filter button click</code> I want it to access the database stored procedure and bring back the required data. </p>
  
  <p>Here is my code so far.  And Stored Procedure, and html for the gridview just in case its wrong too.
  <strong>my .cs:</strong></p>
  
  <pre><code> public partial class Animals : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
  
          }
  
          public string FormatURL(object strArgument)
          {
  
              return ("readrealimage.aspx?id=" + strArgument);
  
          }
  
  
          protected void btnFilter_Click(object sender, EventArgs e)
          {
              SqlConnection MyConnection = new
              SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
  
              SqlCommand command = new SqlCommand("sp_SearchAnimals", MyConnection);
  
              if (AnimalTypeDDL.Text != "Dont Mind")
              {
                  AnimalTypeDDL.Text = command.Parameters["@Type_of_Animal"].Value.ToString();
              }
  
  
              if (CrossBreedDDL.Text != "Dont Mind")
              {
                  CrossBreedDDL.Text = command.Parameters["@CrossBreed"].Value.ToString();
              }
  
              if (SexDDL.Text != "Dont Mind")
              {
                  SexDDL.Text = command.Parameters["@Sex"].Value.ToString();
              }
  
              if (SizeDDL.Text != "Dont Mind")
              {
                  SizeDDL.Text = command.Parameters["@Size"].Value.ToString();
              }
  
              if (AgeDDL.Text != "Dont Mind")
              {
                  AgeDDL.Text = command.Parameters["@Age"].Value.ToString();
              }
  
              if (LocationDDL.Text != "Dont Mind")
              {
                  LocationDDL.Text = command.Parameters["@Location"].Value.ToString();
              }
  
              if (RescueDDL.Text != "Dont Mind")
              {
                  RescueDDL.Text = command.Parameters["@Name"].Value.ToString();
              }
  
              if (ChildrenDDL.Text != "Select one")
              {
                  ChildrenDDL.Text = command.Parameters["@Children"].Value.ToString();
              }
              if (OtherCatsDDL.Text != "Select one")
              {
                  OtherCatsDDL.Text = command.Parameters["@OtherCats"].Value.ToString();
              }
              if (OtherDogsDDL.Text != "Select one")
              {
                  OtherDogsDDL.Text = command.Parameters["@OtherDogs"].Value.ToString();
              }
  
              GridView1.DataSource = ds;
              GridView1.DataBind();
  
              if (GridView1.Rows.Count &gt;= 1)
              {
                  Panel1.Visible = true;
                  GridView1.Visible = true;
                  lblMsg.Visible = false;
  
              }
              else if (GridView1.Rows.Count &lt; 1)
              {
                  GridView1.Visible = false;
                  Panel1.Visible = false;
                  lblMsg.Text = "Your search criteria returned no results.";
                  lblMsg.Visible = true;
              }
  
              command.CommandType = CommandType.Text;
              command.Connection.Open();
              SqlDataReader MyDataReader = command.ExecuteReader();
              MyConnection.Close();
  
          }
  
  
          protected void buttonClear_Click(object sender, EventArgs e)
          {
              AnimalTypeDDL.Text = "Don't Mind";
              CrossBreedDDL.Text = "Don't Mind";
              SexDDL.Text = "Don't Mind";
              SizeDDL.Text = "Don't Mind";
              AgeDDL.Text = "Don't Mind";
              LocationDDL.Text = "Don't Mind";
              RescueDDL.Text = "Don't Mind";
  
          }
      }
  </code></pre>
  
  <hr>
  
  <p><strong>my stored procedure:</strong></p>
  
  <pre><code>SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
   ALTER PROC [dbo].[sp_SearchAnimals]
   (
   @Type_of_Animal nvarchar(50),
   @CrossBreed nvarchar(50),
   @Sex nvarchar(50),
   @Size nvarchar(50),
   @Age nvarchar(50),
   @Location nvarchar(50),
   @Name nvarchar(50),
   @Children nvarchar(50),
   @OtherCats nvarchar(50),
   @OtherDogs nvarchar(50),
   @Details nvarchar(300) 
   )
   AS
  BEGIn
  
  SELECT
             AD.Location,AD.Details, R.Name,
             I.Content
  FROM
     AnimalDetails As AD INNER JOIN
     Images As I ON AD.ImageId = I.ImageId,
     AnimalDetails As DA INNER JOIN RescueDetails As R ON DA.RescueId = R.RescueId 
      WHERE
     (@Type_of_Animal is NUll OR AD.Type_of_Animal = @Type_of_Animal) AND
     (@CrossBreed is null OR AD.CrossBreed = @CrossBreed) AND
     (@Sex is null or AD.Sex = @Sex) AND
     (@Size is null or AD.Size = @Size) AND
     (@Age is null or AD.Age = @Age) AND
     (@Location is null or AD.Location = @Location) AND
     (@Name is null or R.Name = @Name) AND
     (@Children is null or AD.Children = @Children) AND
     (@OtherCats is null or AD.OtherCats = @OtherCats) AND
     (@OtherDogs is null or AD.OtherDogs = @OtherDogs) AND
     (@Details is null or AD.Details = @Details) 
  
      END
  </code></pre>
  
  <hr>
  
  <p><strong>My .aspx:</strong></p>
  
  <pre><code>&lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
          OnRowDataBound="GridView1_RowDataBound" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
          AllowPaging="True" AllowSorting="True"&gt;
          &lt;RowStyle CssClass="gridViewRowStyle" Wrap="True" /&gt;
          &lt;HeaderStyle CssClass="gridViewHeaderStyle" Wrap="False" /&gt;
          &lt;SelectedRowStyle Wrap="true" CssClass="gridViewSelectedRowStyle" /&gt;
          &lt;AlternatingRowStyle CssClass="gridViewAltRowStyle" /&gt;
          &lt;Columns&gt;
              &lt;asp:BoundField DataField="Type_of_Animal" HeaderText="Type_of_Animal" /&gt;
              &lt;asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex" /&gt;
              &lt;asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" /&gt;
              &lt;asp:BoundField DataField="Location" HeaderText="Location" /&gt;
          &lt;/Columns&gt;
          &lt;FooterStyle CssClass="gridViewHeaderStyle" Wrap="False" /&gt;
          &lt;PagerSettings Position="Bottom" /&gt;
          &lt;PagerStyle CssClass="gridViewHeaderStyle" /&gt;
      &lt;/asp:GridView&gt;
      &lt;asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="&lt;%$ ConnectionStrings:MyConnectionString %&gt;"
          SelectCommand="SELECT [Type_of_Animal], [Sex], [Age], [Location]         From[AnimalDetails] "&gt;
      &lt;/asp:SqlDataSource&gt;
      &lt;div style="font-family: Arial; font-size: small;"&gt;
          &amp;nbsp;&amp;nbsp;You are viewing page
          &lt;%=GridView1.PageIndex + 1%&gt;of
          &lt;%=GridView1.PageCount%&gt;
      &lt;/div&gt;
      &lt;/asp:Panel&gt;
      &lt;asp:Label ID="lblMsg" runat="server" Text="Your search criteria did not return any Logs"
          Visible="False" CssClass="label"&gt;&lt;/asp:Label&gt;
      &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;
  </code></pre>