我尝试将下拉列表绑定(bind)到详细信息 View ,但不断收到有关下拉列表 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>
错误信息如下:
“Approved”的 SelectedValue 无效,因为它不存在于项目列表中。 参数名称:值
将下拉列表的值附加到我的对象以便可以在数据库中正确创建它的正确方法是什么?我的大多数搜索一直告诉我如何将下拉列表绑定(bind)到对象数据源,但这不是我需要做的。这是一个基本的下拉列表,包含两个永远不会改变的项目。
最佳答案
发生此错误的原因是您将 DropDownList
的 SelectedValue
绑定(bind)到 DetailsView
数据源的“Approved”字段,但是它尝试分配的值不是您列出的两个值之一(“已批准”和“已拒绝”)。
我看到您已设置DataValueField="Approved"
。您是否在代码隐藏中设置下拉菜单的数据源?因为这不会将您的 ListItems
设置为 DetailsView
数据源中“Approved”列中的值,所以会将它们设置为下拉列表的数据源.
根据您的逻辑,以下是一些可能性:
- 确保您的静态项目与
DetailsView
的“已批准”字段中可能返回的项目相匹配。或者, - 将
DropDownList
绑定(bind)到包含“已批准”中所有可能值的数据集,并完全删除静态项目。或者, - 在 DropDown 中设置
AppendDataBoundItems="True"
并同时包含静态和数据绑定(bind)项
关于asp.net - 将 DropDownList 绑定(bind)到没有数据源的详细信息 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9416444/