2011-09-26 33 views
0

我有2個下拉列表在窗體視圖的編輯項模板內。第一個下拉菜單包含一列車輛,第二列車輛模型。模型列表需要通過從Makes下拉列表中進行選擇來過濾。在asp.net中級聯下拉的數據綁定錯誤

這裏有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下拉菜單中獲取值。但是,這似乎不起作用,因爲對象數據源上的選擇參數無法在窗體視圖中看到該控件。

所以現在我試圖在對象數據源上使用會話選擇參數。

<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

最初我想在對象模型下拉對象 數據源上使用控件選擇參數。使用參數從「生產」下拉菜單中獲取 值。但是,這似乎不起作用 對象數據源上的選擇參數無法在窗體視圖中看到控件 。


您需要到ObjectDataSource進入模板:

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

感謝的是,是啊,這還挺的工作,我能回去使用控制參數的對象數據源。但是,當我在「製作」下拉菜單中選擇其他項目時,我仍然遇到同樣的錯誤。雖然如果我從模型下拉列表中刪除「SelectedValue ='<%#Bind(」ModelId「)%>」,它將起作用,但是沒有選擇正確的模型。 –

+0

你還在使用選定的索引更改處理程序? –

+0

我也面臨同樣的問題..任何建議> ??? –