Реализация каскадной привязки DropDownList в шаблонном элементе управления

У меня есть 2 элемента управления DropDownList в моей форме, второй из которых использует SelectedValue первого в качестве одного из параметры привязки.

Оба элемента управления DropDownList находятся в FormView.InsertItemTemplate со свойствами SelectedValue , привязанными к источнику данных FormView с использованием Связывающее выражение.

Когда FormView впервые отображается в режиме вставки, все работает нормально. Проблема в том, что после AutoPostBack из первого DropDownList , FormView не (повторно) связывается, однако, поскольку ControlParameter на втором DropDownList был изменен, он ДЕЙСТВИТЕЛЬНО связывает (как и предполагалось), но возникает исключение в выражении привязки второго DDL, я предполагаю, поскольку FormView не связывает его pass:

System.InvalidOperationException: методы привязки данных, такие как Eval (), XPath () и Bind () можно использовать только в контексте привязки данных. control.

Вот разметка:

<InsertItemTemplate>
.
.
.
<tr class="GridViewRowB">
                    <td class="GridViewCell">
                        Offense Type
                    </td>
                    <td class="GridViewCell">
                        <asp:DropDownList ID="ddlOffenseType" runat="server" DataSourceID="dsOffenseType"
                            AutoPostBack="true" DataValueField="OffenseTypeID" DataTextField="Description"
                            SelectedValue='<%# Bind("OffenseTypeID") %>'>
                        </asp:DropDownList>
                        <asp:ObjectDataSource ID="dsOffenseType" runat="server" TypeName="OffenseType"
                            SelectMethod="GetAll">
                            <SelectParameters>
                                <asp:Parameter Name="ActiveOnly" DefaultValue="True" Type="Boolean" />
                            </SelectParameters>
                        </asp:ObjectDataSource>
                    </td>
                </tr>
                <tr class="GridViewRowA">
                    <td class="GridViewCell">
                        Attorney
                    </td>
                    <td class="GridViewCell">
                        <asp:DropDownList ID="ddlAttorney" runat="server" DataSourceID="dsAttorney" DataValueField="AttorneyID"
                            DataTextField="AttorneyNameWithCount" SelectedValue='<%# Bind("AttorneyID") %>'>
                        </asp:DropDownList>
                        <asp:ObjectDataSource ID="dsAttorney" runat="server" TypeName="Attorney"
                            SelectMethod="GetAttorneyWithCaseCount">
                            <SelectParameters>
                                <asp:Parameter Name="ActiveOnly" DefaultValue="True" Type="Boolean" />
                                <asp:ControlParameter Name="OffenseTypeID" Type="Int32" ControlID="ddlOffenseType"
                                    PropertyName="SelectedValue" />
                            </SelectParameters>
                        </asp:ObjectDataSource>
                    </td>
                </tr>
.
.
.
</InsertItemTemplate>

Мой вопрос: как лучше всего заставить эту функциональность работать? Можно ли сохранить оба DDL в шаблоне? Я бы предпочел избегать использования инструментария AJAX или других клиентских решений.

5
задан pseudocoder 24 August 2011 в 15:27
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: