asp.net - 将 DropDownList SelectedValue 设置为有时为空值的绑定(bind)字段

标签 asp.net data-binding selectedvalue

我遇到的情况是,我有一个 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/

相关文章:

c# - Caliburn.Micro ItemsSource 未绑定(bind)到当前 View 模型,而是绑定(bind)到父级

Silverlight 编程数据绑定(bind)到页面标题属性未更新

wpf - 如何使用 XAML 中的选定值制作简单的组合框?

c# - 将 Combobox 与 Dictionary 对象绑定(bind),但在后面的代码中设置选定值不生效

c# - ASP.NET Core 2.0 类库中 Microsoft.AspNet.WebApi.Client 的替代方案

c# - Dapper-“必须声明标量变量@VersionId”

c# - 从控件获取绑定(bind)对象

c# - aspx提交表单错误

javascript - 如何在 onclick 事件后删除 TextBox 上的缩进? (ASP.NET)

c# - 使用 Entity Framework 从 ASP.NET MVC (C#) 中的 DropDown 获取 SelectedValue