8

次の処理方法についてアドバイスが必要です。- varchar(25) 型で NULL を許可するデータ フィールド misc_text_2 があります。次の構文を使用すると

<asp:Label ID="lblPrinter" runat="server"  Text='<%# iif(eval("misc_text_2") is dbnull.value, "", iif(eval("misc_text_2") like "NA", "None", iif(eval("misc_text_2") like "KP1", "Kitchen Printer 1", iif(eval("misc_text_2") like "KP2", "Kitchen Printer 2", iif(eval("misc_text_2") like "KP3", "Kitchen Printer 3", iif(eval("misc_text_2") like "BP1", "Bar Printer 1", iif(eval("misc_text_2") like "BP2", "Bar Printer 2", iif(eval("misc_text_2") like "BP3", "Bar Printer 3", Eval("misc_text_2")))))))))%>'></asp:Label>

エラーが発生し続けます Exception Details: System.InvalidCastException: Conversion from type 'DBNull' to type 'String' is not valid.

何かが欠けていることは知っていますが、何か...

前もって感謝します

4

8 に答える 8

13

DBNull.Value自分で変換を明示的に確認して実行する必要があります。

DBNull.Valueつまり、考慮に入れて、変換を行うメソッドを構築します。

于 2009-02-11T10:23:42.703 に答える
3

Eval を使用するたびに、何らかの方法で遅延評価をシムインする必要があります。これを行うには、次の各インスタンスを置き換えます。

iif(eval("misc_text_2") like ...

iif(IsDbNull(eval("misc_text_2")) OrElse eval("misc_text_2") like ...

これOrElseにより、DbNull からブール値への変換の試みが防止されます。ただし、より基本的な観点からは、bang が最も正しいです。これはすべてコード ビハインドで、おそらく ItemDataBound (または RowDataBound) イベント ハンドラーで行う必要があります。

さらに反省すると…

OP はConvert.ToString()、DBNulls を String.Empty に変換するコードでメソッドを使用することもできます。

于 2011-10-11T19:23:29.213 に答える
3

あなたの質問には答えませんが、変換を行うコードビハインドメソッドを実際に作成する必要があります。これにより、コードの理解とデバッグが容易になり、コードの再利用が可能になります。

于 2009-02-11T10:30:44.013 に答える
0

MS-Dynamics(Solomon)用にセットアップされたレガシーデータベースがあるため、nullを処理する方法は、ASPまたはVB.NETコードのいずれかでnull文字列に変換することです。すなわち

Trim$(misc_text_2 & " ")

VBの任意のバージョンの問題を取り除きます。

于 2010-06-22T21:20:16.330 に答える
0

データ セット デザイナーを使用している場合、このエラーを取り除く最も簡単な方法は、対象の列のプロパティを変更することです。

「Throw exception」ではなく「Empty」への NullValue 例外。

これが皆さんのお役に立てば幸いです。

于 2012-10-22T05:26:45.787 に答える
0

DBNull または IsDBNull を変換するには、次の方法を試すことができます。

  1. DBNull を空の文字列に変換します

    (DBNullObj).ToString

  2. DBNull コンバーター関数を作成する

    パブリック関数 ConvertDBNullToString(DBNullObj As Object) を文字列として

    if IsDBNull(DBNullObj) then

    戻る ""

    終了する場合

    DBNullObj を返す

    終了機能

于 2014-03-05T03:15:17.087 に答える
0

SpiritUMTP が提案したように、Dataset Designer を使用している場合は、DataColumn.NullValue を「Throw exception」から「empty」または「Nothing」に変更します。私は後者を選択し、問題を解決しました。私は今、何もチェックしていません (If IsNothing(columnFax) then ...)

于 2016-03-01T17:04:02.300 に答える
-1

SQL クエリで isNull(misc_text_2, '') を使用して、DBNull の代わりに空の文字列を返すことができます。

于 2009-02-11T10:21:41.723 に答える