Member 12605293 Ответов: 1

Изменение значения при фильтрации двух выпадающих списков в gridview


Привет
Значение фильтрации изменяется при фильтрации двух выпадающих списков.На самом деле у меня есть два выпадающих списка: 1.Возраст и 2.зарплата ...Если я выберу возраст (20-30 лет) и зарплату (40000-50000), то результат должен прийти при фильтрации обоих.

Что я уже пробовал:

<pre>protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
               // bind();
                BindGrid();
                BindAge();
                BindSalary();
            }
        }
        protected void bind()
        {
            cn.Open();
            SqlCommand cmd = new SqlCommand("gvempdetails", cn);
            cmd.Parameters.AddWithValue("@Action", "SELECT");
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            cn.Close();
            if (ds.Tables[0].Rows.Count > 0)
            {
                gvDetails.DataSource = ds;
                gvDetails.DataBind();
            }
            else
            {
                ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
                gvDetails.DataSource = ds;
                gvDetails.DataBind();
                int columncount = gvDetails.Rows[0].Cells.Count;
                gvDetails.Rows[0].Cells.Clear();
                gvDetails.Rows[0].Cells.Add(new TableCell());
                gvDetails.Rows[0].Cells[0].ColumnSpan = columncount;
                gvDetails.Rows[0].Cells[0].Text = "Enter the details";
            }
        }
        protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Add"))
            {

                TextBox txtEmpId = (TextBox)gvDetails.FooterRow.FindControl("txtempid");
                TextBox txtEmpName = (TextBox)gvDetails.FooterRow.FindControl("txtempname1");
                TextBox txtEmpDep = (TextBox)gvDetails.FooterRow.FindControl("txtdep1");
                TextBox txtAge = (TextBox)gvDetails.FooterRow.FindControl("txtage1");
                TextBox txtSal = (TextBox)gvDetails.FooterRow.FindControl("txtsal1");

                string Id = txtEmpId.Text;
                string name = txtEmpName.Text;
                string department = txtEmpDep.Text;
                string age = txtAge.Text;
                string salary = txtSal.Text;

                INSERTEmployee(Id, name, department, age, salary);
                gvDetails.EditIndex = -1;
                bind();

            }
        }
        protected void INSERTEmployee(string Id, string name, string department, string age, string salary)
        {

            SqlCommand cmd = new SqlCommand();
            cn.Open();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "gvempdetails";

            cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@EMPLOYEEID", int.Parse(age.Trim())));
            cmd.Parameters.Add(new SqlParameter("@EMPLOYEENAME", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@DEPARTMENT", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@AGE", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@SALARY", int.Parse(salary.Trim())));

            cmd.Parameters["@Action"].Value = "INSERT";
            cmd.Parameters["@EMPLOYEEID"].Value = Id;
            cmd.Parameters["@EMPLOYEENAME"].Value = name;
            cmd.Parameters["@DEPARTMENT"].Value = department;
            cmd.Parameters["@AGE"].Value = age;
            cmd.Parameters["@SALARY"].Value = salary;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            gvDetails.DataSource = dt;
            gvDetails.DataBind();
            cn.Close();


        }
        protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Label EmpId = (Label)gvDetails.Rows[e.RowIndex].FindControl("lblempid");

            TextBox txtEmpName = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtempname");
            TextBox txtEmpDep = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtdep");
            TextBox txtAge = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtage");
            TextBox txtSal = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtsal");

            string Id = EmpId.Text;
            string name = txtEmpName.Text;
            string department = txtEmpDep.Text;
            string age = txtAge.Text;
            string salary = txtSal.Text;

            UpdateEmployee(Id, name, department, age, salary);

            gvDetails.EditIndex = -1;
            bind();
        }
        protected void UpdateEmployee(string Id, string name, string department, string age, string salary)
        {
            SqlCommand cmd = new SqlCommand();
            cn.Open();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "gvempdetails";

            cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@EMPLOYEEID", SqlDbType.Int));
            cmd.Parameters.Add(new SqlParameter("@EMPLOYEENAME", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@DEPARTMENT", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@AGE", SqlDbType.VarChar, 30));
            cmd.Parameters.Add(new SqlParameter("@SALARY", SqlDbType.Int));

            cmd.Parameters["@Action"].Value = "UPDATE";

            cmd.Parameters["@EMPLOYEEID"].Value = Convert.ToInt32(Id.ToString());
            cmd.Parameters["@EMPLOYEENAME"].Value = name;
            cmd.Parameters["@DEPARTMENT"].Value = department;
            cmd.Parameters["@AGE"].Value = age;
            cmd.Parameters["@SALARY"].Value = Convert.ToInt32(salary.ToString());
            //cmd.Parameters["@SALARY"].Value = Convert.ToInt32(salary.ToString());

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            gvDetails.DataSource = dt;
            gvDetails.DataBind();

            cn.Close();
        }

       










        protected void gvDetails_RowEditing(object sender, GridViewEditEventArgs e)
        {

            gvDetails.EditIndex = e.NewEditIndex;
            bind();
        }
        protected void gvDetails_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {

            gvDetails.EditIndex = -1;
            bind();
        }
        protected void DeleteEmployee(string id)
        {
            SqlCommand cmd = new SqlCommand();
            cn.Open();
            cmd.Connection = cn;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "gvempdetails";

            cmd.Parameters.Add(new SqlParameter("@Action", SqlDbType.VarChar, 50));
            cmd.Parameters.Add(new SqlParameter("@EMPLOYEEID", int.Parse(id.Trim())));
            cmd.Parameters["@Action"].Value = "DELETE";
            cmd.Parameters["@EMPLOYEEID"].Value = id;

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            gvDetails.DataSource = dt;
            gvDetails.DataBind();
            cn.Close();
        }
        protected void gvDetails_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            Label EmpId = (Label)gvDetails.Rows[e.RowIndex].FindControl("lblempid");
            string id = EmpId.Text;

            DeleteEmployee(id);
            gvDetails.EditIndex = -1;
            bind();
        }

        protected void OnSelectedIndexChanged(object sender, EventArgs e)
        {

        }
        protected void OnPaging(object sender, GridViewPageEventArgs e)
        {
            gvDetails.PageIndex = e.NewPageIndex;
            this.bind();

        }

        protected void BindSalary()
        {
            DataTable dt = new DataTable();
            cn.Open();
            SqlCommand cmd = new SqlCommand("Select * from Salary1", cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            //DataSet ds = new DataSet();
            da.Fill(dt);
            cn.Close();
            ddlAddSalary1.DataSource = dt;
            ddlAddSalary1.DataTextField = "Salary";
            ddlAddSalary1.DataValueField = "Salary";
            ddlAddSalary1.DataBind();
            ddlAddSalary1.Items.Insert(0, new ListItem("--Select--"));

        }

        protected void ddlAddSalary1_SelectedIndexChanged1(object sender, EventArgs e)
        {
            
            BindGrid();
        }

        protected void BindAge()
        {
            DataTable dt = new DataTable();
            cn.Open();
            SqlCommand cmd = new SqlCommand("Select * from Age", cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            //DataSet ds = new DataSet();
            da.Fill(dt);
            cn.Close();
            ddlAge.DataSource = dt;
            ddlAge.DataTextField = "Age";
            ddlAge.DataValueField = "Age";
            ddlAge.DataBind();
            ddlAge.Items.Insert(0, new ListItem("--Select--"));

        }
        protected void ddlAge_SelectedIndexChanged(object sender, EventArgs e)
        {
           

            BindGrid();
        }
        protected void gvDetails_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {

        }
        private void BindGrid()
        {
            string query = " select * from gvdetails17 ";
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = cn;
            if (ddlAddSalary1.SelectedValue != "")
            {
                string[] sal = ddlAddSalary1.SelectedValue.Split('-');
                string from = sal[0];
                string to = sal[1];


                query += " and  Sal between  @fromsal and @tosal ";
                cmd.Parameters.AddWithValue("@fromsal", from);
                cmd.Parameters.AddWithValue("@tosal", to);

            }
            if (ddlAge.SelectedValue != "")
            {
                string[] ages = ddlAge.SelectedValue.Split('-');
                string from = ages[0];
                string to = ages[1];

                query += " and  Sal between  @fromage and @toage ";
                cmd.Parameters.AddWithValue("@fromage", from);
                cmd.Parameters.AddWithValue("@toage", to);
            }
            cmd.CommandText = query;
            DataTable dt = new DataTable();
            cmd.CommandType = CommandType.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            gvDetails.DataSource = dt;
            gvDetails.DataBind();

        }


        
    }
}

1 Ответов

Рейтинг:
9

Karthik_Mahalingam

private void BindGrid( )
      {
          string query = " select * from gvdetails17 WHERE 1=1 ";
          SqlCommand cmd = new SqlCommand();
          cmd.Connection = cn;
          if (ddlAddSalary1.SelectedValue != "")
          {
              string[] sal = ddlAddSalary1.SelectedValue.Split('-');
              string from = sal[0];
              string to = sal[1];


              query += " and  Sal between  @fromsal and @tosal ";
              cmd.Parameters.AddWithValue("@fromsal", from);
              cmd.Parameters.AddWithValue("@tosal", to);

          }
          if (ddlAge.SelectedValue != "")
          {
              string[] ages = ddlAge.SelectedValue.Split('-');
              string from = ages[0];
              string to = ages[1];

              query += " and  Age between  @fromage and @toage ";
              cmd.Parameters.AddWithValue("@fromage", from);
              cmd.Parameters.AddWithValue("@toage", to);
          }
          cmd.CommandText = query;
          cmd.CommandType = CommandType.Text;
          SqlDataAdapter da = new SqlDataAdapter(cmd);
           DataTable dt = new DataTable();
          da.Fill(dt);
          gvDetails.DataSource = dt;
          gvDetails.DataBind();

      }


      protected void ddlAddSalary1_SelectedIndexChanged1(object sender, EventArgs e)
      {
          BindGrid();
      }


      protected void ddlAge_SelectedIndexChanged(object sender, EventArgs e)
      {
          BindGrid();
      }


Member 12605293

Привет Картик
Я получаю неправильный синтаксис рядом с da. Fill(dt);

Karthik_Mahalingam

запрос + = " и Sal между @fromage и @toage ";
это должно быть имя столбца вашего возраста.

DataTable dt = new DataTable(); эта строка отсутствовала

проверьте обновленное решение.

Member 12605293

Да, я добавил Эти строки, но все равно ошибка приходит в dt..По отладку нет никакого значения, проходит в ДТ.Пожалуйста, посмотрите весь мой код

Karthik_Mahalingam

точное сообщение об ошибке?

Member 12605293

Неправильный синтаксис рядом с ключевым словом "и".

Karthik_Mahalingam

измените запрос как

запрос + = " и Sal между ( @fromsal и @tosal ) ";
запрос + = " и возраст между ( @fromage и @toage ) ";

Member 12605293

та же ошибка приходит
пожалуйста, проверьте мой пост обратно

Karthik_Mahalingam

как я могу проверить ваш пост обратно
поделитесь скриншотом

Member 12605293

На отладку и если условие пропуска

Karthik_Mahalingam

Биндаж();
Биндсалары();
Биндгрид();

Member 12605293

как насчет использования bind, который имеет select Asction???

Karthik_Mahalingam


string query = " select * from gvdetails17 WHERE 1=1 ";

Member 12605293

Да еще после изменения ошибки существуют (неправильный синтаксис рядом с ключевым словом "и".)

Karthik_Mahalingam

какой запрос вы получаете здесь
УМК.CommandText = запрос;

Member 12605293

выберите * из gvdetails17, где 1=1

Karthik_Mahalingam

запустите это в SQL server studio и проверьте

Member 12605293

Получение всех деталей из таблицы

Karthik_Mahalingam

тогда в чем же проблема в вашем коде?

Member 12605293

: (он пропускает оба условия if

Karthik_Mahalingam

проверьте, какую ценность вы получаете здесь
ddlAddSalary1.SelectedValue

Member 12605293

если пропускает так как условие if

Karthik_Mahalingam

какую ценность вы получаете
ddlAddSalary1.SelectedValue
держите точку останова и ЧК

Member 12605293

Привет. Это прекрасно работает

Karthik_Mahalingam

хорошо... хорошо
закрой пост.

Member 12605293

Я имею в виду видимость вида сетки идет

Member 12605293

Но если я выберу возраст в первый раз, то страница станет пустой, так как в зарплате нет ни одного выбранного пункта.Это происходит изначально

Karthik_Mahalingam

Хм, это зависит от элемента, выбранного в ddl.

Member 12605293

Возможно ли сделать видимость истинной??

Karthik_Mahalingam

инструкции DDL.видимое = истинное;

Member 12605293

Это возможно, чтобы установить, как видно на выберите в DDL

Karthik_Mahalingam

ddlsal.видимое = истинное;
ddlage.видимое= истинное;

Member 12605293

Сетка не видна

Karthik_Mahalingam

сетки.видимое = истинное