我有一个表单视图,在编辑模板中我有两个下拉菜单。 使用允许值列表显式设置下拉1。 它也设置为autopostback。 下拉2是数据绑定到objectdatasource,此objectdatasource使用第一个下拉列表作为其中一个参数。 (想法是下拉1限制下拉2中显示的内容)

在项目的编辑模板的第一个视图上,它工作正常。 但如果下拉列表1选择了不同的项目,则会回发并生成错误

数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。

这是下拉列表#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>

任何有关如何使其发挥作用的帮助都会受到极大关注。

===============>>#1 票数:3

我在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;

===============>>#2 票数:0

听起来好像控件在回发后没有正确数据绑定。

您是在数据绑定页面中的第一个下拉列表还是在代码隐藏中? 如果是代码隐藏,你每次都在on_init或on_load上进行吗?

可能存在第二个下拉列表的SelectedValue在回发后设置为不存在的项目的问题。

===============>>#3 票数:0

除非您的第二个下拉列表是数据绑定控件(例如,一个Repeater) - 我不确定您要将SelectedValue绑定到哪个。 显然,.NET也不是 - 因为那可能是错误发生的地方。

Connect_ToProjectId应该来自哪里?

  ask by Solmead translate from so

未解决问题?本站智能推荐: