我在表单视图的编辑项模板中有2个下拉列表。第一个下拉列表包含一系列车辆制造,第二个下拉列表包含车辆模型。模型列表需要通过Makes下拉列表中的选择进行过滤。
以下是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()只能在数据绑定控件的上下文中使用。”当我尝试将数据绑定模型下拉时,在选定的索引中更改了make下拉的方法。
protected void RadComboBoxAssetMake_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
{
Session["assetMakeId"] = e.Value.ToString();
((RadComboBox) fvAsset.FindControl("RadComboBoxAssetModel")).DataBind();
}
有没有一种简单的方法来实现这种事情,看起来像是一种常见的情况,必须有一种标准的方法来做到这一点?
答案 0 :(得分:1)
最初我想在对象上使用控件选择参数 模型的数据源下拉列表。随着参数得到 Make下拉值。然而,这似乎不起作用 对象数据源上的select参数无法看到控件 在表单视图中。
您需要将ObjectDataSource移动到模板中:
<EditItemTemplate>
<telerik:RadComboBox ....
<telerik:RadComboBox ....
<asp:ObjectDataSource ....
<asp:ObjectDataSource ....
</EditItemTemplate>