【问题标题】:Binding DropDownList to Detailsview without Data Source在没有数据源的情况下将 DropDownList 绑定到 Detailsview
【发布时间】:2012-02-23 15:51:22
【问题描述】:

我正在尝试将下拉列表绑定到详细信息视图,但不断收到有关下拉列表 ID 字段的错误:

<asp:TemplateField HeaderText="Approval">
                <ItemTemplate>
                    <asp:DropDownList ID="Approved" runat="server" DataValueField="Approved" SelectedValue='<%#Bind("Approved") %>'>
                        <asp:ListItem Text="Approved" Value="Approved" />
                        <asp:ListItem Text="Denied" Value="Denied"/>

                    </asp:DropDownList>
                </ItemTemplate>                   
 </asp:TemplateField>

报错信息如下:

“已批准”的 SelectedValue 无效,因为它不存在于项目列表中。 参数名称:值

将下拉列表的值附加到我的对象以便它可以在数据库中正确创建的正确方法是什么?我的大部分搜索一直告诉我如何将下拉列表绑定到对象数据源,但这不是我需要做的。这是两个永远不会改变的项目的基本下拉列表。

【问题讨论】:

    标签: asp.net vb.net data-binding detailsview


    【解决方案1】:

    发生此错误是因为您将DropDownListSelectedValue 绑定到DetailsView 数据源的“已批准”字段,但它尝试分配的值不是您拥有的两个值之一列出(“批准”和“拒绝”)。

    我看到你设置了DataValueField="Approved"。您是否在代码隐藏中设置下拉菜单的数据源?因为这不会将您的ListItems 设置为DetailsView 数据源中“已批准”列中的值,所以它将它们设置为下拉列表的任何数据源。

    根据您的逻辑,这里有一些可能性:

    • 确保您的静态项目与DetailsView 的“已批准”字段中返回的可能项目匹配。或者,
    • DropDownList 绑定到包含“已批准”中所有可能值的数据集,并完全删除您的静态项目。或者,
    • 在 DropDown 中设置 AppendDataBoundItems="True" 并同时拥有静态和数据绑定项

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      相关资源
      最近更新 更多