2

誰かがこれに答えてくれることを願っています。髪を引っ張ってる!

データベースから NULL をキャッチするためにDropDownList、デフォルト値が "" の があります。
の「値」フィールドはDropDownListですvarchar
これはうまくいきます。

ただし、レコードを保存すると、値はデータベースに空の文字列として保持されます。
後でそのレコードを再バインドすると、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 に答える