【问题标题】:Formview Dropdown 2 depends on Dropdown 1Formview Dropdown 2 依赖于 Dropdown 1
【发布时间】:2010-09-06 13:19:33
【问题描述】:

我有一个表单视图,在编辑模板中有两个下拉菜单。 下拉 1 明确设置了允许值的列表。它也设置为自动回发。 下拉 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>

任何有关如何使其工作的帮助将不胜感激。

【问题讨论】:

  • 你解决了这个问题吗,否则我会为你提供不同而优雅的解决方案?

标签: asp.net formview


【解决方案1】:

我在 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】:

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

    您是对页面中的第一个下拉菜单还是代码隐藏中的第一个下拉菜单进行数据绑定? 如果是代码隐藏,你每次都是在 on_init 还是 on_load 中做?

    回发后,第二个下拉菜单的 SelectedValue 可能会设置为不存在的项目。

    【讨论】:

      【解决方案3】:

      除非您的第二个下拉列表位于数据绑定控件(例如中继器)中 - 我不确定您要尝试将 SelectedValue 绑定到什么。显然,.NET 也不是——因为这可能是错误发生的地方。

      Connect_ToProjectId 应该来自哪里?

      【讨论】:

        猜你喜欢
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 1970-01-01
        • 2018-12-20
        • 2017-04-11
        • 2019-12-08
        • 2017-05-09
        相关资源
        最近更新 更多