Click here to Skip to main content
15,896,278 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
I am having problems with my project. I have a few dropdownlists which a user can filter the data that is in the gridview. So on filter button click I want it to access the database stored procedure and bring back the required data.

Here is my code so far. And Stored Procedure, and html for the gridview just in case its wrong too.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.Configuration;

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);
    }
   public void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
   {

   }
   protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
   {
   }
   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 >= 1)
   {
       Panel1.Visible = true;
       GridView1.Visible = true;
       lblMsg.Visible = false;

   }
   else if (GridView1.Rows.Count < 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";

   }
   }


SQL
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


<asp:GridView ID="GridView1"  runat="server" AutoGenerateColumns="False"
                       DataSourceID="SqlDataSource1"
                       OnRowDataBound="GridView1_RowDataBound"
                        önSelectedIndexChanged="GridView1_SelectedIndexChanged"
                       AllowPaging="True" AllowSorting="True">

                       <rowstyle cssclass="gridViewRowStyle" wrap="True" />
                       <HeaderStyle CssClass="gridViewHeaderStyle" Wrap="False" />
                       <SelectedRowStyle Wrap="true"  CssClass="gridViewSelectedRowStyle"/>
                       <alternatingrowstyle cssclass="gridViewAltRowStyle" />
                       <columns>
                           <asp:BoundField DataField="Type_of_Animal" headerText="Type_of_Animal"  />
                           <asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex" />
                           <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
                           <asp:BoundField DataField="Location" HeaderText="Location"
                                />
                       </columns>
                       <footerstyle cssclass="gridViewHeaderStyle" wrap="False" />
                       <pagersettings position="Bottom" />
                       <pagerstyle cssclass="gridViewHeaderStyle" />

                   <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                       ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"

                       SelectCommand="SELECT [Type_of_Animal], [Sex], [Age], [Location]         From[AnimalDetails] ">

                   <div style="font-family: Arial; font-size: small;">
                         You are viewing page <%=GridView1.PageIndex + 1%>of <%=GridView1.PageCount%>
                   </div>

               <asp:Label ID="lblMsg" runat="server" Text="Your search criteria did not return any Logs"
               Visible="False" CssClass="label">
Posted
Updated 28-May-11 7:01am
v2

1 solution

Your logic totally doesn't work, since you're assigning the command parameters to the controls without executing the command.This is a lack of knowing the basic ADO.NET[^] framework. Look the following links

1. Configuring Parameters and Parameter Data Types (ADO.NET)[^]
2. Parameters.AddWithValue Output parameter in ADO.NET 2[^]
3. Using ADO.NET for beginners[^]
4. One more New Things I Learned[^]

Good luck.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900