【问题标题】:Filter the gridview on the basis of dropdown list ID. [Outside Gridview]根据下拉列表 ID 过滤 gridview。 [外部网格视图]
【发布时间】:2014-12-11 09:20:31
【问题描述】:

我有一个位于网格视图之外的下拉列表。下拉列表值来自主表。我希望根据下拉列表的选定值,gridview 中的数据应该被过滤。请帮助我实现这一目标,因为我是新手并且以前没有这样做过。 查看我的下拉列表代码:-

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

cs代码:-

 private void Binddropdownlist()
    {
        SqlCommand cmd = new SqlCommand("Select * from tbl_ngoname", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlPagesNgo.DataTextField = ds.Tables[0].Columns["ngo_name"].ToString();
        ddlPagesNgo.DataSource = ds.Tables[0];
        ddlPagesNgo.DataBind();
        ddlPagesNgo.Items.Insert(0, new ListItem("--Select NGO--", "0"));
    }

另见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>

如果您还需要什么,请告诉我。

获取数据功能码:-

  private DataTable GetData(SqlCommand cmd)
    {
        DataTable dt = new DataTable();
        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultCSRConnection"].ConnectionString);
        SqlDataAdapter sda = new SqlDataAdapter();
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;
        try
        {
            conn.Open();
            sda.SelectCommand = cmd;
            sda.Fill(dt);
            return dt;
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            conn.Close();
            sda.Dispose();
            conn.Dispose();
        }
    }

【问题讨论】:

    标签: c# sql asp.net gridview


    【解决方案1】:

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

    protected void ddlPagesNgo_SelectedIndexChanged(object sender, EventArgs e)
    {
       BindGrid(ddlPagesNgo.SelectedValue);
    
    
    }
    

    你的下拉列表现在应该是

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

    gridview绑定功能的变化

        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(); 
        }
    

    也可以看看parameterized queries to prevent SQL Injection attack.

    【讨论】:

    • 这里的getDataTable 是什么?
    • getDataTable() 是一个函数,您将在其中编写 Select 查询以检索 gridview 的数据。 Yop 将传递下拉列表选择的值并在 WHERE 子句中使用该值
    • 我已经写好了getData函数。下拉列表中的值来自主表。其 ID 与 gridview 中的其他表映射。我需要根据Id进行映射。所以请以这种方式帮助我。我知道这并不难,但我无法继续。
    • 好的,还显示传递给 GetData() 的 SqlCommand 的文本,这里必须添加下拉列表的值..
    【解决方案2】:

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

    1. 在下拉值更改时 - 提交表单 (AutoPostBack="true")。
    2. 将 SelectedIndexChanged(object sender, EventArgs e) 事件处理程序添加到 你的下拉菜单。
    3. 使用一些参数调用 Binddropdownlist。
    4. 修改 Binddropdownlist 以便为查询创建 where 条件 根据参数值。使用来自的新数据重新绑定 gridview 查询。

    【讨论】:

      【解决方案3】:

      在 DropdownSelectedIndex 上绑定您的 Gridview 已更改。在 DropdownSelection 检查

              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 
               }
           }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-15
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多