Ошибка привязки данных в каскадных выпадающих списках в asp.net - PullRequest
0 голосов
/ 26 сентября 2011

У меня есть 2 выпадающих списка в элементе редактирования Шаблон представления формы. Первый выпадающий список содержит список марок автомобилей, а второй - список моделей автомобилей. Список моделей необходимо отфильтровать по выбору из выпадающего списка.

Вот 2 раскрывающихся списка

    <telerik:RadComboBox ID="RadComboBoxAssetMake" runat="server" DataTextField="AssetMakeName"
                                       SelectedValue='<%# Bind("MakeId") %>'         DataSourceID="odsAllAssetMakes" AutoPostBack="True" DataValueField="Id" Skin="Vista"
                                            Width="212px" OnSelectedIndexChanged="RadComboBoxAssetMake_SelectedIndexChanged">
                                            <telerik:Items>
                                                <telerik:RadComboBoxItem Text="" Value="" />
                                            </telerik:Items>

                                        </telerik:RadComboBox>
                                        <telerik:RadComboBox ID="RadComboBoxAssetModel" runat="server" DataTextField="AssetModelName"
                                     SelectedValue='<%# Bind("ModelId") %>'              DataSourceID="odsAssetModelByMake" DataValueField="Id" Skin="Vista" Width="212px">
                                            <telerik:Items>
                                                <telerik:RadComboBoxItem Text="" Value="" />
                                            </telerik:Items>
                                        </telerik:RadComboBox>

Изначально я хотел использовать параметр выбора элемента управления для источника данных объекта для модели. С параметром, получающим значение из выпадающего списка Make. Однако это, похоже, не работает, так как параметр select в источнике данных объекта не может видеть элемент управления в представлении формы.

Итак, теперь я пытаюсь использовать параметр выбора сеанса в источнике данных объекта.

 <asp:ObjectDataSource runat="server" ID="odsAssetModelByMake" DataObjectTypeName="GPSO.Repository.AssetModel"
    TypeName="GPSOnline.ATOMWebService" SelectMethod="GetAssetModelbyMake">
    <SelectParameters>                           
                  <asp:SessionParameter DbType="Guid" SessionField="assetMakeId" Name="assetMakeId"  />
    </SelectParameters>
</asp:ObjectDataSource>

Но теперь я получаю эту ошибку: «Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления с привязкой к данным». Когда я пытаюсь привязать данные к модели, выпадающий в выбранном индексе изменяет метод выпадающего списка.

protected void RadComboBoxAssetMake_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        Session["assetMakeId"] = e.Value.ToString();
        ((RadComboBox) fvAsset.FindControl("RadComboBoxAssetModel")).DataBind();           
    }

Существует ли простой способ достижения такого рода вещей, может показаться, что это настолько распространенный сценарий, что должен быть стандартный способ сделать это?

1 Ответ

1 голос
/ 26 сентября 2011

Изначально я хотел использовать параметр выбора элемента управления в источнике данных объекта для модели раскрывающегося списка.С параметром, получающим значение из выпадающего списка Make.Однако это, похоже, не работает, так как параметр select в источнике данных объекта не может видеть элемент управления в виде формы.

Вам необходимо переместить ObjectDataSource в шаблоны:

<EditItemTemplate>  
   <telerik:RadComboBox ....
   <telerik:RadComboBox ....
   <asp:ObjectDataSource ....
   <asp:ObjectDataSource ....
</EditItemTemplate>
...