Javascript 带有jQuery mobile和ASP.NET Gridview的响应表

Javascript 带有jQuery mobile和ASP.NET Gridview的响应表,javascript,jquery,asp.net,vb.net,nullreferenceexception,Javascript,Jquery,Asp.net,Vb.net,Nullreferenceexception,下面是一种使用ASP.NET gridview创建jQuery Mobile响应表的方法 ASP.NET(回流示例) 问题 当我的gridview没有返回任何结果时,我收到错误:对象引用未设置为对象的实例 我认为这是因为gridview没有任何绑定,但是gridview仍然呈现为表 有人能想象为什么会发生这种情况,以及如何解决它吗 修复程序 要解决此问题,请确保将ShowHeaderWhenEmpty=“True”添加到gridview中,以确保Head标记在为空时仍然呈现。您必须在两个级别上工

下面是一种使用ASP.NET gridview创建jQuery Mobile响应表的方法

ASP.NET(回流示例)

问题

当我的gridview没有返回任何结果时,我收到错误:对象引用未设置为对象的实例

我认为这是因为gridview没有任何绑定,但是gridview仍然呈现为表

有人能想象为什么会发生这种情况,以及如何解决它吗

修复程序


要解决此问题,请确保将ShowHeaderWhenEmpty=“True”添加到gridview中,以确保Head标记在为空时仍然呈现。

您必须在两个级别上工作:

(1) 使用
EmptyDataTemplate
EmptyDataText
确保使用完全由您控制的html标记呈现空GridView。但是,您可能仍然需要避免使用
数据绑定
。见下文

确定如何对GridView进行数据绑定:

如果您使用来自数据访问层的数据通过代码手动执行,那么您可以有条件地绑定它。e、 g.如果您的数据源是
列表
,则首先检查该列表是否包含数据:

If myList.Any then
    MyGrid.DataSource = myList 
    MyGrid.DataBind()
Else
    'take evasive measures here
End If
这样可以避免调用GridView的
DataBind
处理程序,避免出现“对象引用”错误


(2) 或者,您可能希望查看GridView上设置为
true
ShowHeaderWhenEmpty
属性。这样,仍然会创建一个表,并且
databind
代码不会产生“对象引用”错误。您需要一个
EmptyDataTemplate
,才能让
ShowHeaderWhenEmpty
正常工作。

如果空GridView不需要在这样的数据绑定事件中执行代码,则必须检查是否为空GridView

Protected Sub gv_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles gv.DataBound
    If gv.Rows.Count > 0 Then
        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 If
End Sub

这可能是因为没有数据,所以没有创建HeaderRow。在访问其单元格之前,请尝试检查是否存在HeadError。我同意这可能是问题的原因。几乎所有出现
NullReferenceException
的情况都是相同的。请参阅“”以获取一些提示。获胜的选项(2)。我喜欢简单的解决方法。我不是;我甚至不知道ShowHeaderWhenEmpty酒店。非常感谢@abhitalks=)很高兴能帮上忙:)
Protected Sub gv_DataBound(ByVal sender As Object, ByVal e As EventArgs) Handles gv.DataBound
    If gv.Rows.Count > 0 Then
        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 If
End Sub