【发布时间】:2024-05-23 17:15:01
【问题描述】:
我在表单视图的编辑项模板中有 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 下拉列表中获取值。但是,这似乎不起作用,因为对象数据源上的选择参数无法在表单视图中看到控件。
所以现在我尝试在对象数据源上使用会话选择参数。
<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();
}
有没有一种简单的方法来实现这种事情,看起来很常见的场景,必须有一个标准的方法来做到这一点?
【问题讨论】: