ASP.NET Gridview фильтрация с выпадающими - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть Gridview, который использует раскрывающийся список для предоставления значения, примененного к запросу SQL, который фильтрует соответствующие данные.Проблема заключается в том, что когда элемент выбирается из списка, вид сетки не обновляется, значение 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>

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

Спасибозаранее за любую помощь или указатели.

1 Ответ

0 голосов
/ 17 февраля 2019

Я считаю, что вам нужно использовать ControlParameter, связанный с элементом управления раскрывающегося списка городов в вашем источнике данных SQL:

<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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...