Ваша логика выглядит здоровой.
Если вы хотите, чтобы изменения отражались сразу после изменения значения каждого 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. Не очень эффективно, но должно работать.