我遇到的情况是,我有一个 gridview,它是从允许编辑的 SQL 表中填充的。对于其中一个字段,我拥有它,因此用户必须从 GridView 的编辑模板中的下拉框中选择一个值。
<asp:TemplateField HeaderText="Department" SortExpression="Department">
<EditItemTemplate>
<asp:DropDownList ID="ddlEditDepartment" runat="server"
SelectedValue='<%# Bind("Department") %>'>
<asp:ListItem>Department 1</asp:ListItem>
<asp:ListItem>Department 2</asp:ListItem>
<asp:ListItem>Department 3</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDepartment" runat="server" Text='<%# Bind("Department") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
如果您为该字段已在表中存储了值的记录选择“编辑”,则没有问题。但是,如果您选择“编辑”并且表中还没有对应的值,则会出现以下错误
'ddlEditDepartment' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
在这种情况下,我如何解释空白或空值并使其发挥作用?
最佳答案
您将 DropDownList 绑定(bind)到 GridView 数据源中名为“Department”的字段:
SelectedValue='<%# Bind("Department") %>'
这是一种 hack,但您可以修改填充 GridView 的 Department 字段的查询以解决空值(通过将它们合并出来):
SELECT COALESCE(Department, "No department entered") AS Department
FROM YourTable
然后只需将其添加为下拉列表中的“默认”选项即可:
<asp:ListItem>No department entered</asp:ListItem>
关于asp.net - 将 DropDownList SelectedValue 设置为有时为空值的绑定(bind)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16672817/