将DropDownList绑定到没有数据源的Detailsview

时间:2012-02-23 15:51:22

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

我尝试将下拉列表绑定到详细信息视图,但不断收到有关下拉列表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无效,因为它在项目列表中不存在。 参数名称:值

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

1 个答案:

答案 0 :(得分:2)

发生此错误是因为您将SelectedValue的{​​{1}}绑定到DropDownList数据源的“已批准”字段,但它尝试分配的值不是您列出的两个中的一个(“已批准”和“已拒绝”)。

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

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

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