Mahesh2223 Ответов: 3

Заставьте gridview реагировать на два выпадающих списка


У меня есть два выпадающих списка и один gridview на моей странице, Я связываю один выпадающий список из базы данных, а другой я непосредственно взял элементы списка на странице, так как в другом выпадающем списке всего 5 элементов.

теперь проблема в том, что я должен быть в состоянии заставить gridview реагировать на два выпадающих списка
в selectindex изменилось событие и заполнить его в gridview... я не понимаю, как это сделать..

событие onselectindex не срабатывает, и данные не поступают в gridview.

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

<asp:DropDownList ID="ddlGroupName" runat="server" CssClass="form-control input-sm" AutoPostBack="true" AppendDataBoundItems="true" OnSelectedIndexChanged="ddlGroup_SelectedIndexChanged">
                       <asp:ListItem Text="All" Value="0"></asp:ListItem>
                   </asp:DropDownList>



<div class="row">
    <div class="col-lg-12">
        <asp:GridView ID="grdDeviceDetails" runat="server" AutoGenerateColumns="false" CssClass="table table-hover table-bordered"
            AllowPaging="true" PagerSettings-PageButtonCount="3" GridLines="None" PageSize="10" OnPageIndexChanging = "OnPaging">
            <Columns>
                <asp:BoundField DataField="GroupName" HeaderText="GroupName" SortExpression="GroupName" />
                <asp:BoundField DataField="Brand" HeaderText="Brand" SortExpression="Brand" />
                <asp:BoundField DataField="Model" HeaderText="Model" SortExpression="Model" />
                <asp:BoundField DataField="SerialNo" HeaderText="SerialNo" SortExpression="SerialNo" />
                <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
                <asp:BoundField DataField="AddedOn" HeaderText="Date" SortExpression="AddedOn" />

            </Columns>
            <PagerStyle CssClass="pagination-ys" />
        </asp:GridView>
        </div>
    </div>


 <asp:DropDownList ID="ddlState" runat="server" CssClass="form-control input-sm" AutoPostBack="true" AppendDataBoundItems="true">
                  <asp:ListItem Text="All" Value="All"></asp:ListItem>
<%--                  <asp:ListItem Text="Active" Value="Active"></asp:ListItem>
                  <asp:ListItem Text="Assigned" Value="Assigned"></asp:ListItem>
                  <asp:ListItem Text="Returned" Value="Returned"></asp:ListItem>
                  <asp:ListItem Text="De-activated" Value="De-activated"></asp:ListItem>
                  <asp:ListItem Text="Sent for repair" Value="Sent for repair"></asp:ListItem>
                  <asp:ListItem Text="End of life-retired" Value="End of life-retired"></asp:ListItem>--%>
                  </asp:DropDownList>


public DataSet GetItems()
      {

          SqlConnection con = new SqlConnection(cs);
          SqlCommand cmd = new SqlCommand("sp_DeviceDetails", con);
          cmd.CommandType = CommandType.StoredProcedure;
          SqlDataAdapter da = new SqlDataAdapter(cmd);
          DataSet ds = new DataSet();
          try
          {
              con.Open();
              da.Fill(ds);
              con.Close();
          }
          catch (Exception ex)
          {
              //write error message
          }
          return ds;
      }



        protected void Page_Load(object sender, EventArgs e)
        {
            ddlGroupName.DataSource = GetItems();
            ddlGroupName.DataTextField = "GroupName";
            ddlGroupName.DataBind();
            grdDeviceDetails.DataSource = GetItems();
            grdDeviceDetails.DataBind();
}


protected void ddlGroup_SelectedIndexChanged(object sender, EventArgs e)
{

        GetItems();
}

Mahesh2223

Это полный код.. два выпадающих списка и gridview.. один выпадающий список я привязал из базы данных, которая находится здесь GetItems ().. теперь проблема в том, что я должен заставить gridview реагировать на два выпадающих списка.. например, если я выбираю активный в одном выпадающем списке, я должен получить только активные данные в gridview, если я выбираю любое имя группы во втором выпадающем списке, я должен получить только эти данные..если я выбираю в обоих выпадающих списках, если есть совпадающие данные, которые мы должны получить или мы не должны получить..как это сделать..

Mahesh2223

охраняемых недействительными ddlState_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{

Метод getstatus();
}

Что мы пишем здесь, чтобы заставить gridview реагировать на два выпадающих списка?.
у меня есть 5 предметов в 1-м выпадающем списке. и почти как 30 пунктов во втором выпадающем списке

3 Ответов

Рейтинг:
2

Vincent Maverick Durano

Вам нужно передать выбранный элемент из DropDownList в вашем sql-запросе или SP, если вы хотите отфильтровать GridView на основе DropDownList выбор. Вот краткий пример для вашей справки:

<br />
protected void BindGrid(string selectedItem){<br />
    using(SqlConnection connection = new SqlConnection("YOUR CONNECTION STRING HERE")){<br />
                string sql = "SELECT Field1, Field2, Field3 FROM YourTableName WHERE YourFieldName = @Param1";<br />
        using(SqlCommand cmd = new SqlCommand(sql,connection)){<br />
                cmd.Parameters.AddWithValue("@Param1", selectedItem);<br />
<br />
                DataTable dt = new DataTable();<br />
                SqlDataAdapter ad = new SqlDataAdapter(cmd);<br />
                ad.Fill(dt);<br />
<br />
                if (dt.Rows.Count > 0) { //check if the query returns any data<br />
                       GridView1.DataSource = dt;<br />
                       GridView1.DataBind();<br />
                }<br />
                else<br />
                {<br />
                     //No records found<br />
                }<br />
        }<br />
<br />
    }<br />
}<br />


Затем в SelectedIndexChanged в случае вашего выпадающего списка вы можете вызвать описанный выше метод следующим образом:

<br />
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){<br />
	 BindGrid(DropDownList1.SelectedItem.Text);<br />
}<br />


Просто убедитесь, что вы установили AutoPostback к истине для вашего выпадающего списка, чтобы уволить selectedindexchanged событие.


Рейтинг:
2

Graeme_Grant

Я не ан ASP.NET программист (предпочитаю MVC), но похоже, что <asp:DropDownList ID="ddlState" runat="server" CssClass="form-control input-sm" AutoPostBack="true" AppendDataBoundItems="true"> управление не подключено для OnSelectedIndexChanged событие.


Рейтинг:
0

Karthik_Mahalingam

Добавь IsPostBack Состояние в PageLoad событие

protected void Page_Load(object sender, EventArgs e)
         {
         if (!Page.IsPostBack)
           {
              ddlGroupName.DataSource = GetItems();
              ddlGroupName.DataTextField = "GroupName";
              ddlGroupName.DataBind();
              grdDeviceDetails.DataSource = GetItems();
              grdDeviceDetails.DataBind();
           }
         }


Mahesh2223

Если я это сделаю, то он покажет ошибку типа groupname, отсутствующую в выбранном источнике данных... и проблема в том, что я должен уметь заставить gridview реагировать на выпадающие списки..

Karthik_Mahalingam

опубликуйте полный код.

Mahesh2223

Ответ измените комментарий. Удалите комментарий.
Это полный код.. два выпадающих списка и gridview.. один выпадающий список я привязал из базы данных, которая находится здесь GetItems ().. теперь проблема в том, что я должен заставить gridview реагировать на два выпадающих списка.. например, если я выбираю активный в одном выпадающем списке, я должен получить только активные данные в gridview, если я выбираю любое имя группы во втором выпадающем списке, я должен получить только эти данные..если я выбираю в обоих выпадающих списках, если есть совпадающие данные, которые мы должны получить или мы не должны получить..как это сделать..

Mahesh2223

охраняемых недействительными ddlState_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{

Метод getstatus();
}

Что мы пишем здесь, чтобы заставить gridview реагировать на два выпадающих списка?.
у меня есть 5 предметов в 1-м выпадающем списке. и почти как 30 пунктов во втором выпадающем списке

Karthik_Mahalingam

для чего нужно вызывать GetItems(); в этом случае..
достаточно только одного раза в загрузке страницы

Karthik_Mahalingam

на смену как выпадающее событие, просто привязать элемент управления GridView на основе выбранного значения

Mahesh2223

хорошо... но как написать код, чтобы ответить gridview на несколько выпадающих списков.