Formview下拉菜单2取决于下拉菜单1
时间:2020-03-05 18:42:03 来源:igfitidea点击:
我有一个表单视图,在编辑模板中有两个下拉菜单。
下拉列表1是使用允许值列表明确设置的。它还设置为自动回发。
下拉列表2是数据绑定到对象数据源的对象,此对象数据源使用第一个下拉列表作为其参数之一。 (想法是下拉菜单1限制下拉菜单2中显示的内容)
在项目的编辑模板的第一个视图上,它可以正常工作。但是,如果下拉菜单1选择了其他项目,则会回发并产生错误
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
这是下拉列表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>
对于如何使它起作用的任何帮助将得到极大的帮助。
解决方案
回答
回传后听起来控件未正确绑定数据。
我们是否要绑定页面或者后面代码中的第一个下拉列表?
如果是代码隐藏的,则每次都在on_init或者on_load中进行吗?
在回发之后,第二个下拉列表的SelectedValue设置为不存在的项目可能会出现问题。
回答
除非第二个下拉列表位于数据绑定控件(例如,Repeater)中,否则我不确定我们要绑定SelectedValue的内容。显然,.NET都不是,因为这可能是发生错误的地方。
Connect_ToProjectId应该来自哪里?
回答
我在FormView中绑定下拉列表时遇到了类似的问题。我通过在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;