0

ASP.NET グリッドビューを使用して jQuery Mobile のレスポンシブ テーブルを作成する方法を次に示します。

ASP.NET (リフロー例)

Protected Sub gv_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles gv.DataBound
    gv.HeaderRow.TableSection = TableRowSection.TableHeader
    gv.Attributes.Add("data-role", "table")
    gv.Attributes.Add("data-mode", "reflow")

    Dim headerCells = gv.HeaderRow.Cells
    headerCells(3).Attributes.Add("data-priority", "2")
    headerCells(4).Attributes.Add("data-priority", "2")
End Sub

質問

グリッドビューが結果を返さない場合、エラーが発生します:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

これは、グリッドビューにバインドするものがないためだと思いますが、グリッドビューはまだテーブルとしてレンダリングされます。

なぜこれが発生するのか、どのように修正できるのか、誰でも想像できますか?

修正

これを修正するには、必ず ShowHeaderWhenEmpty="True" を gridview に追加して、空の場合でも thead タグがレンダリングされるようにしてください。

4

2 に答える 2

2

ここでは、次の 2 つのレベルで作業する必要があります。

(1)EmptyDataTemplateまたはEmptyDataTextを使用して、空の GridView が完全にコントロール内にある html マークアップでレンダリングされるようにします。ただし、databind. 下記参照。

GridView をデータバインドする方法を特定します。

データアクセスレイヤーからのデータを使用してコードを手動で実行している場合は、条件付きでバインドできます。たとえば、データ ソースが のlist場合、まずそのリストにデータが含まれているかどうかを確認します。

If myList.Any then
    MyGrid.DataSource = myList 
    MyGrid.DataBind()
Else
    'take evasive measures here
End If

このようにして、GridView のDataBindハンドラーへの呼び出しを回避し、「オブジェクト参照」エラーからあなたを救います。

(2) または、GridView にShowHeaderWhenEmpty設定されているプロパティを確認することもできます。trueこのように、テーブルは引き続き作成され、databindコードは「オブジェクト参照」エラーを生成しません。EmptyDataTemplate動作するにはforが必要ですShowHeaderWhenEmpty

于 2013-10-04T13:33:27.713 に答える