Форма просмотра Dropdown 2 зависит от Dropdown 1

У меня есть вид формы, в шаблоне редактирования у меня есть два раскрывающихся списка. Выпадающий 1 явно установлен со списком допустимых значений. Он также установлен на автоответчик. Раскрывающийся список 2 привязан к источнику данных объекта, этот источник данных использует первый раскрывающийся список в качестве одного из своих параметров. (Идея в том, что выпадающий 1 ограничивает то, что показано в выпадающем списке 2)

При первом просмотре шаблона редактирования элемента он работает нормально. Но если в раскрывающемся списке 1 выбран другой элемент, он отправляет сообщение назад и выдает ошибку

Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления, связанного с данными.

Вот выпадающий список № 2:

<asp:DropDownList ID="ProjectList" runat="server" SelectedValue='<%# Bind("ConnectToProject_ID","{0:D}") %>' DataSourceID="MasterProjectsDataSource2" DataTextField="Name" DataValueField="ID" AppendDataBoundItems="true">
      <asp:ListItem Value="0" Text="{No Master Project}" Selected="True" />
</asp:DropDownList>

А вот и MasterProjectDataSource2:

<asp:ObjectDataSource ID="MasterProjectsDataSource2" runat="server" 
            SelectMethod="GetMasterProjectList" TypeName="WebWorxData.Project" >
            <SelectParameters>
                <asp:ControlParameter ControlID="RPMTypeList" Name="RPMType_ID" 
                    PropertyName="SelectedValue" Type="Int32" />
            </SelectParameters>
        </asp:ObjectDataSource>

Любая помощь о том, как заставить это работать, будет очень цениться.

22.08.2008 14:30:33
Вы решили проблему, в противном случае я приду, чтобы предложить вам другое и элегантное решение?
Muhammad Akhtar 14.12.2009 14:00:07
3 ОТВЕТА

Похоже, что элементы управления не связаны должным образом после обратной передачи.

Вы связываете данные с первым выпадающим списком на странице или в коде? Если есть код, вы делаете это каждый раз в on_init или on_load?

Может быть проблема с SelectedValue второго выпадающего меню, установленного как несуществующий элемент после обратной передачи.

0
22.08.2008 16:30:08

Если ваш 2-й выпадающий список не находится в элементе управления с привязкой к данным (скажем, Repeater) - я не уверен, к чему вы пытаетесь привязать SelectedValue. По-видимому, ни один из .NET - поскольку, вероятно, там, где происходит ошибка.

Откуда должен появиться Connect_ToProjectId?

0
25.08.2008 03:09:01

У меня была похожая проблема со связанными выпадающими списками в FormView. Я обошел его, установив выбранное значение вручную в «OnDataBound» формы.

(не знаю, откуда вы получаете ConnectToProject_ID)

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
ddl.SelectedValue = String.Format("{0:D}", ConnectToProject_ID);

Когда вы будете готовы сохранить, используйте событие «OnItemInserting»:

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
e.Values["ConnectToProject_ID"] = ddl.SelectedValue;

или "OnItemUpdating"

Когда вы будете готовы сохранить, используйте событие «OnItemInserting»:

FormView fv = (FormView)sender;
DropDownList ddl = (DropDownList)fv.FindControl("ProjectList");
e.NewValues["ConnectToProject_ID"] = ddl.SelectedValue;
3
8.10.2008 16:13:28