DetailsView中的下拉列表

时间:2011-06-30 14:24:01

标签: c# asp.net

我已经将一个DropDownList控件添加到了DetailsView,我试图让它绑定到我的更新/插入方法的“State”参数。

<InsertItemTemplate>
<asp:DropDownList ID="States" runat="server" SelectedValue='<%# Bind("State") %>'>
<asp:ListItem Value="NY">New York</asp:ListItem>
....
</asp:DropDownList>
</InsertItemTemplate>

我已经使用50个状态填充DropDownList,因此它们不绑定到任何表并且是静态项。我只是希望能够在编辑时选择一个状态,当我点击编辑时,它应该运行存储过程进行编辑,并将DropDownList的值作为@State的参数。

不幸的是,我收到了这个错误:

'States' has a SelectedValue which is invalid because it does not exist in the 
list of items.
Parameter name: value

我研究了这个问题,但有些帖子建议使用“Eval”而不是“Bind”或添加一些空值,但这并没有解决我的问题。你们对我如何摆脱这个错误有任何想法/建议吗?

3 个答案:

答案 0 :(得分:2)

如果ListItems是静态的(即在标记中定义),我相信你也应该发布它们。 请记住ListItems的正确语法是

<asp:ListItem Value="value" Text="displayText"></asp:ListItem>

答案 1 :(得分:0)

如果数据库中的表中的某些值与listitem值不匹配,则会出现此错误。请检查表条目

答案 2 :(得分:0)

将其绑定到项目模板值,例如

 <ItemTemplate>
  <asp:Label ID="lbl1" runat="server" Text='<%# Bind("State") %>'></asp:Label>
</ItemTemplate>

然后你可以:

InsertItemTemplate>
<asp:DropDownList ID="States" runat="server" SelectedValue='<%# Bind("State") %>'>
<asp:ListItem Value="NY">New York</asp:ListItem>
....
</asp:DropDownList>
</InsertItemTemplate>