Отображение результатов из выпадающего списка в таблице - PullRequest
1 голос
/ 27 января 2012

У меня есть этот фрагмент кода, я пытаюсь выполнить sql-запросы из выпадающих списков.

<html>
    <body>
        <form id="form1" runat="server">
            <asp:DropDownList ID="DropDownList1" runat="server"
                DataSourceID="SqlDataSource1" DataTextField="a" DataValueField="a">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString7 %>"
                SelectCommand="SELECT DISTINCT [a] FROM [Table_1]"></asp:SqlDataSource>
            <br />
            <br />
            <asp:DropDownList ID="DropDownList2" runat="server"
                DataSourceID="SqlDataSource2" DataTextField="b" DataValueField="b">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource2" runat="server"
                ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString8 %>"
                SelectCommand="SELECT DISTINCT [b] FROM [Table_1]"></asp:SqlDataSource>
            <br />
            <br />
            <asp:DropDownList ID="DropDownList3" runat="server"
                DataSourceID="SqlDataSource3" DataTextField="c" DataValueField="c">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource3" runat="server"
                ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString9 %>"
                SelectCommand="SELECT DISTINCT [c] FROM [Table_1]"></asp:SqlDataSource>
            <br />
            <br />
            <br />
            <asp:DropDownList ID="DropDownList4" runat="server"
                DataSourceID="SqlDataSource4" DataTextField="d" DataValueField="d">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource4" runat="server"
                ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString10 %>"
                SelectCommand="SELECT DISTINCT [d] FROM [Table_1]"></asp:SqlDataSource>
            <br />
            <br />
            <br />
            <br />
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
                DataSourceID="SqlDataSource5">
                <Columns>
                    <asp:BoundField DataField="a" HeaderText="a" SortExpression="a" />
                    <asp:BoundField DataField="b" HeaderText="b" SortExpression="b" />
                    <asp:BoundField DataField="c" HeaderText="c" SortExpression="c" />
                    <asp:BoundField DataField="d" HeaderText="d" SortExpression="d" />
                    <asp:BoundField DataField="e" HeaderText="e" SortExpression="e" />
                    <asp:BoundField DataField="f" HeaderText="f" SortExpression="f" />
                </Columns>
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource5" runat="server"
                ConnectionString="<%$ ConnectionStrings:DB_firstConnectionString11 %>"
                SelectCommand="SELECT [a], [b], [c], [d], [e], [f] FROM [Table_1] WHERE (([a] = @a) AND ([b] = @b) AND ([c] = @c) AND ([d] = @d))">
                <SelectParameters>
                    <asp:ControlParameter ControlID="DropDownList1" Name="a"
                        PropertyName="SelectedValue" Type="String" />
                    <asp:ControlParameter ControlID="DropDownList2" Name="b"
                        PropertyName="SelectedValue" Type="String" />
                    <asp:ControlParameter ControlID="DropDownList3" Name="c"
                        PropertyName="SelectedValue" Type="String" />
                    <asp:ControlParameter ControlID="DropDownList4" Name="d"
                        PropertyName="SelectedValue" Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>
        </form>
    </body>
</html>

У меня небольшая таблица sql, и я хочу, чтобы при выборе значений в раскрывающемся списке она отображала результаты в этой таблице.Я не могу этого сделать.Есть идеи?

1 Ответ

1 голос
/ 27 января 2012

Ваша логика выглядит здоровой.

Если вы хотите, чтобы изменения отражались сразу после изменения значения каждого DropDownList, вам нужно добавить свойство AutoPostBack="True" к каждому из них . Например, вот как будет выглядеть первый:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
    DataSourceID="SqlDataSource1" DataTextField="a" DataValueField="a">
</asp:DropDownList>

Единственное, что я могу увидеть, это приведет к тому, что ваша таблица не будет заполнена, если запрос SQL для вашего GridView будет слишком строгим. Возможно, вы хотели использовать OR s вместо AND s в вашем предложении WHERE?

РЕДАКТИРОВАТЬ: Еще одна мысль здесь, может быть, что ваши GridView привязаны к данным до все ваши DropDownList были привязаны к данным. Это приведет к тому, что у них еще не будет SelectedValues, поэтому ваши ControlParameter s не будут иметь значений, когда GridView получит привязку к данным. Вам нужно будет найти способ дождаться, пока все DropdownLists не будут привязаны к данным, а затем использовать этот код для повторного связывания вашего GridView:

SqlDataSource5.DataBind();
GridView1.DataBind();

Подсказка: чтобы проверить и убедиться, что это ваша проблема, вы можете поместить этот код в _DataBound событие каждый вашего DropDownList s. Не очень эффективно, но должно работать.

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