1

という名前のフィールドの 1 つを持つデータセットがあります"Reviewed"

このデータセットは入力されており、下の図はそのデータを示しています。 ここに画像の説明を入力

今、このデータセットを DataGrid 内に表示しようとしています:

<ASP:TemplateColumn HeaderText="Reviewed" HeaderStyle-HorizontalAlign="center" HeaderStyle-Wrap="True">
                                    <ItemStyle Wrap="false" HorizontalAlign="center" />
                                            <ItemTemplate>
                                                <ASP:Checkbox  Checked='<%# DataBinder.Eval(Container.DataItem, "Reviewed") %>' runat="server" ID="Label22" />
                                            </ItemTemplate>
                                            <EditItemTemplate>
                                                <Asp:Checkbox id="Textbox5" width="40" Checked='<%# DataBinder.Eval(Container.DataItem, "Reviewed") %>' runat="server" />
                                            </EditItemTemplate>
        </ASP:TemplateColumn>

次のエラーが表示されます。

例外の詳細: System.InvalidCastException: 型 'DBNull' から型 'Boolean' へのキャストは無効です。

私が間違っていることは何ですか?質問は DBNull の由来ですか?

================================

アップデート:

素敵な答えをありがとう。私の混乱の主なポイントは、「STUPID」XML ビジュアライザーが [レビュー済み] フィールドをチェック済みとして誤って表示していたことです (上の図を参照)。データセット自体の値を確認したところ、すべてが実際に DBNUll であることがわかりました。

4

2 に答える 2

2

マークアップ コードをこのコードに変更してみてください。

<asp:Checkbox 
  Checked='<%# (Eval("reviewed")==DBNull.Value ? false : Eval("reviewed"))%>' 
  runat="server" ID="Label22" />

したがって、nullValue をブール値のプロパティにバインドする代わりに、DBNull がある場合は false を割り当てます。クレジットはlimnoに送られます

于 2013-07-18T14:10:05.413 に答える