2

我希望有人能回答这个问题。我要拔头发了!

我有DropDownList一个默认值“”来从数据库中捕获 NULL。
的“值”字段DropDownListvarchar.
这工作正常。

但是,在保存记录时,该值将作为空字符串保存在数据库中。
稍后重新绑定该记录会引发ArgumentOutOfRangeException.
有什么推荐的解决方案吗?

我目前正在使用以下绑定方法:

<asp:DropDownList ID="DestinationDropDownList" runat="server" 
   DataSourceID="CountryDataSource" DataTextField="Name" 
   DataValueField="CountryRegionCode" SelectedValue='<%#Bind("DestinationCountryCode")%>'
   AppendDataBoundItems="True">
    <asp:ListItem Text="Select..." Value=""></asp:ListItem>
</asp:DropDownList>
4

2 回答 2

2

发现问题:
数据库中的Country值字段是固定长度的,所以它试图绑定到“”(3个空格),其中现有ListItem值只是“”。
我将默认 ListItem 值更改为“”,现在它工作得很好。

于 2013-04-10T06:17:04.607 回答
0

该区域可能是您在页面加载时绑定下拉列表。

将它绑定在里面if(!Page.IsPostback)应该可以工作

if (!IsPostBack)
{
   //bin your dropdown here
}

编辑

我不知道天气是否会起作用,但您可以创建如下所示的属性

private string _myProperty;
public string MyProperty
{
    get { return _myProperty; }
    set
    {
        if (value == String.Empty)
        {
            _myProperty = null;
        }
        else
        {
            _myProperty = value;
        }
    }
}
于 2013-04-10T05:02:36.483 回答