【问题标题】:ASP.NET Gridview filtering with Dropdowns带有下拉菜单的 ASP.NET Gridview 过滤
【发布时间】:2019-02-16 21:56:34
【问题描述】:

我有一个 Gridview,它使用下拉列表提供应用于 SQL 查询的值,该查询过滤适用的数据。问题是当从列表中选择一个项目时,gridview 不会更新,DefaultValue 仍然作为过滤器。

我尝试了许多通过 StackOverflow 看到的替代方法,例如直接绑定标记中的值,但还没有成功。

        <label for="City" class="control-label">Filter by City:</label>
        <div>
            <asp:DropDownList ID="CityDropdown" runat="server" Width="123px" >
                <asp:ListItem>Aberdeen</asp:ListItem>
                <asp:ListItem>Armagh</asp:ListItem>
                <asp:ListItem>Bangor</asp:ListItem>
                <asp:ListItem>Bath</asp:ListItem>
            </asp:DropDownList>
        </div>
        </div>
        <hr />

        <asp:Panel ID="PanelFoodbanks" runat="server">
            <asp:GridView ID="ListFoodbanks" runat="server" AutoGenerateColumns="False" AllowSorting="True" DataSourceID="SqlDataSource_FindCity" EmptyDataText="There are no data records to display." CssClass="table table-responsive" GridLines="None">
                <Columns>
                    <asp:BoundField DataField="Id" SortExpression="Id" ItemStyle-CssClass="hidden" HeaderStyle-CssClass="hidden">
                        <HeaderStyle CssClass="hidden" />
                        <ItemStyle CssClass="hidden" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Other Field" HeaderText="OF" SortExpression="Other Field" />
                    <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                </Columns>
            </asp:GridView>

            <asp:SqlDataSource ID="SqlDataSource_FindFoodbanks" runat="server" ConnectionString="<%$ ConnectionStrings:dbcon %>" SelectCommand="SELECT * FROM [Table] WHERE ([City] = @CityDropdown)">
                <SelectParameters>
                    <asp:Parameter Name="CityDropdown" DefaultValue="Aberdeen"/>
                </SelectParameters>
            </asp:SqlDataSource>

优选地,GridView只需在选择下拉列表中的不同值时动态更新,而不是需要按另一个按钮等。

在此先感谢您的帮助或指点。

【问题讨论】:

  • 尝试在下拉列表控件上设置AutoPostBack="true"
  • 好像没用,不过谢谢Mohsin的建议!

标签: asp.net gridview webforms


【解决方案1】:

我相信您需要在 SQL 数据源中使用绑定到城市下拉列表控件的 ControlParameter:

<asp:SqlDataSource ID="SqlDataSource_FindFoodbanks" runat="server" ConnectionString="<%$ ConnectionStrings:dbcon %>" SelectCommand="SELECT * FROM [Table] WHERE ([City] = @CityDropdown)">
                    <SelectParameters>

        <asp:ControlParameter ControlID="CityDropdown" Name="CityDropdown"
                PropertyName="SelectedValue" />
                    </SelectParameters>
                </asp:SqlDataSource>

同时添加 AutoPostBack="true" 下拉列表

    <asp:DropDownList ID="CityDropdown" AutoPostBack="true" runat="server" Width="123px" >

注意:我注意到在您的代码中 GridView 使用的是 DataSourceID SqlDataSource_FindCity 而不是 SqlDataSource_FindFoodbanks

【讨论】:

    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    相关资源
    最近更新 更多