C# 根据下拉列表ID筛选gridview。[外部gridview]

C# 根据下拉列表ID筛选gridview。[外部gridview],c#,sql,asp.net,gridview,C#,Sql,Asp.net,Gridview,我有一个在gridview之外的下拉列表。下拉列表值来自主表。我希望根据dropdownlist的选定值过滤gridview中的数据。请帮助我实现这一点,因为我是新手,以前从未这样做过。 请参阅我的下拉列表代码:- <asp:DropDownList ID="ddlPagesNgo" runat="server" CssClass="selectpicker form-control-drp wd" Style="width: 100%" AutoPostBack="false">&

我有一个在gridview之外的下拉列表。下拉列表值来自主表。我希望根据dropdownlist的选定值过滤gridview中的数据。请帮助我实现这一点,因为我是新手,以前从未这样做过。 请参阅我的下拉列表代码:-

<asp:DropDownList ID="ddlPagesNgo" runat="server" CssClass="selectpicker form-control-drp wd" Style="width: 100%" AutoPostBack="false"></asp:DropDownList>
另请参见gridview代码

<asp:GridView ID="grdCSRPageData" runat="server" Width="100%" border="1" Style="border: 1px solid #E5E5E5;" CellPadding="3"
                AutoGenerateColumns="False" OnDataBound="grdCSRPageData_DataBound" AllowPaging="true" CssClass="hoverTable"
                OnPageIndexChanging="grdCSRPageData_PageIndexChanging" DataKeyNames="Id" OnRowDeleting="grdCSRPageData_RowDeleting" 
                PageSize="5" ShowFooter="true" OnRowEditing="grdCSRPageData_RowEditing" OnRowUpdating="grdCSRPageData_RowUpdating" 
                OnRowCancelingEdit="grdCSRPageData_RowCancelingEdit">
                <AlternatingRowStyle CssClass="k-alt" BackColor="#f5f5f5"/>
                <Columns>
                    <asp:TemplateField HeaderText="Action" HeaderStyle-Width="5%" HeaderStyle-CssClass="k-grid td" >
                        <ItemTemplate>
                            <asp:Checkbox ID="chkSelect" runat="server" AutoPostBack="false" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="page_title"  HeaderText="Page Title" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td"  />
                    <asp:BoundField DataField="page_description" HeaderText="Page Description" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                    <asp:BoundField DataField="meta_title" HeaderText="Meta Title" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                    <asp:BoundField DataField="meta_keywords" HeaderText="Meta Keywords" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                    <asp:BoundField DataField="meta_description" HeaderText="Meta Description" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                    <asp:BoundField DataField="Active" HeaderText="Active" ItemStyle-Width="30" HeaderStyle-CssClass="k-grid td" />
                    <asp:TemplateField HeaderText="Action" HeaderStyle-Width="15%" HeaderStyle-CssClass="k-grid td" >
                        <ItemTemplate>
                            <asp:ImageButton ID="btnDelete" AlternateText="Delete" ImageUrl="~/images/delete.png" runat="server" Width="15" Height="15" CommandName="Delete" CommandArgument='<%# Eval("Id") %>' CausesValidation="false" OnClientClick="return confirm('Are you sure you want to delete this record?')" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:CommandField ButtonType="Image" ItemStyle-Width="15" EditImageUrl="~/images/edit.png" ShowEditButton="True" ControlStyle-Width="15" ControlStyle-Height="15" CancelImageUrl="~/images/close.png" UpdateImageUrl="~/images/update.png">
                        <ControlStyle Height="20px" Width="20px"></ControlStyle>
                    </asp:CommandField>
                </Columns>
            </asp:GridView>

我认为你必须做到以下几点:

  • 在下拉列表中更改值-提交表单(AutoPostBack=“true”)
  • 将SelectedIndexChanged(对象发送方,EventArgs e)事件处理程序添加到 你的下拉列表
  • 使用一些参数调用Binddropdownlist
  • 修改Binddropdownlist,以便为查询创建where条件 基于参数值。使用来自的新数据重新绑定gridview 询问

  • 获取下拉列表中选定索引更改事件的选定值,并将此值传递给要绑定到gridview的查询生成数据源

    protected void ddlPagesNgo_SelectedIndexChanged(object sender, EventArgs e)
    {
       BindGrid(ddlPagesNgo.SelectedValue);
    
    
    }
    
    您的dropdowlist现在应该是

    <asp:DropDownList ID="ddlPagesNgo" runat="server" CssClass="selectpicker form-control-drp wd" Style="width: 100%" AutoPostBack="True" OnSelectedIndexChanged="ddlPagesNgo_SelectedIndexChanged"></asp:DropDownList>
    

    还可以查看将Gridview绑定到DropdownSelectedIndex上的更改。关于选举检查

            protected void ddlgrid_SelectedIndexChanged(object sender, EventArgs e)
         {
             bindGridview();
             if (ddlgrid.SelectedItem.Value == "1") // Dropdownlist Value 
             {
                  // Write your Sql Procedure or Query To Display result 
    
             //  It will return only selected value in Gridview.
             }
            if (ddlgrid.SelectedItem.Value == "2")
             {
                 // same here 
             }
         }
    

    这里的
    getDataTable
    是什么?getDataTable()是一个函数,您将在其中编写Select查询以检索gridview的数据。Yop将传递dropdownlist所选值,并在子句已编写的函数中使用该值。下拉列表中的值来自主表。其Id与gridview中的其他表映射。我需要在Id的基础上绘制地图。所以请以这种方式帮助我。我知道这并不难,但我无法继续。好的,还显示了传递给GetData()的SqlCommand文本,其中必须添加dropdownlist的值。让我们来看看。
    <asp:DropDownList ID="ddlPagesNgo" runat="server" CssClass="selectpicker form-control-drp wd" Style="width: 100%" AutoPostBack="True" OnSelectedIndexChanged="ddlPagesNgo_SelectedIndexChanged"></asp:DropDownList>
    
        public void BindGrid(int selectedID) 
        { 
        string strQuery = "select Id,page_title,page_description,meta_title,meta_keywords,meta_description,Active from tbl_Pages";
        strQuery +=" WHERE Id = "+selectedID; 
        strQuery +=" ORDER By Id DESC"; 
        SqlCommand cmd = new SqlCommand(strQuery); 
        DataTable dt = GetData(cmd); 
        grdCSRPageData.DataSource = dt; 
        grdCSRPageData.DataBind(); 
        }
    
            protected void ddlgrid_SelectedIndexChanged(object sender, EventArgs e)
         {
             bindGridview();
             if (ddlgrid.SelectedItem.Value == "1") // Dropdownlist Value 
             {
                  // Write your Sql Procedure or Query To Display result 
    
             //  It will return only selected value in Gridview.
             }
            if (ddlgrid.SelectedItem.Value == "2")
             {
                 // same here 
             }
         }