asp.net dropdown null值存储0而不是null

时间:2012-01-13 18:40:21

标签: asp.net

我正在尝试为下拉菜单添加标题。 问题是如果数据为空,它会自动更新为0。 创建数据行时不会发生这种情况。 日期类型为int32。 有趣的是,我可以插入null,但我无法更新为null。

我的解决方案是添加两个列表项。 一个是值=“”。这是初始数据。 (创建) 另一个是值=“0”。这是在更新后。 然而,这不是一个很好的解决方案。

当我更新数据时,整数如何存储0而不是null? 在创建行时,似乎可以存储null ...

<asp:DropDownList ID="addl" runat="server" SelectedValue='<%# Bind("a") %>'>
    <asp:ListItem Value="" Text="-Select-"></asp:ListItem>
    <asp:ListItem Value="1">test1</asp:ListItem>
    <asp:ListItem Value="2">test2</asp:ListItem>                      
    <asp:ListItem Value="0" Text="-Select-"></asp:ListItem>
</asp:DropDownList>

如果数据类型是整数,那么下拉菜单标题的最佳解决方案是什么? 如果它是字符串,我可以简单地添加value =“”并且只运行时间。 如果整数为零,则整数存储为0,并且我还必须创建null以避免编辑模式中的错误。

2 个答案:

答案 0 :(得分:2)

Int32不是Nullable类型,默认情况下等于0(即使未初始化)。尝试使用Nullable的Int32?,或使用其他索引来指示Create选项。

答案 1 :(得分:0)

我不太确定您要更新的int是什么,但如果它是您可以控制的变量,则可以考虑将其从标准int更改为可以为int int i; 1}}。这可以像改变这一样简单:

int? i;

到此:

{{1}}