使用 VB.Net 的标准 .net 2.0 Gridview 的分页问题

问题描述 投票:0回答:3

我正在使用标准的 .net 2.0 Gridview,它使用 XMLDatasource 来填充网格。 XMLDatasource 的 Data 属性是动态设置的,允许 gridview 根据输入进行更改。

所有这些工作正常,但我在分页时遇到问题......

我已将AllowPaging 属性设置为“true”,并将PageSize 属性设置为“10”。 GridView 第一次填充得很好,在底部显示前 10 条记录和页数作为超链接,但是当我尝试单击任何页码来查看它们时,会弹出一个消息框,显示“对象引用未设置”到对象的实例”

有什么想法我做错了吗?或者有什么我需要做但我错过了的事情吗?

当前正在使用的代码;

网格视图...

<asp:GridView ID="GridView1" 
      Runat="server" 
      DataSourceID="XmlDataSource1" 
      AutoGenerateColumns="False" 
      AllowPaging="True"
      style="width:100%; height:100%;"  
      EnableViewState="False">
<SelectedRowStyle BackColor="Red" />
<Columns>
   <asp:BoundField DataField="TYPE" HeaderText="TYPE" SortExpression="TYPE" />
   <asp:BoundField DataField="DESCRIPTION" HeaderText="DESCRIPTION" SortExpression="DESCRIPTION" />
</Columns>
</asp:GridView>

XML数据源...

<asp:XmlDataSource ID="XmlDataSource1" runat="server" TransformFile="~/XML/grid2.xslt" EnableCaching="False">
</asp:XmlDataSource>

设置 XMLDatasource 的 Data 属性的 vb.net 代码...

Private Sub btnTest_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnTest.Click

  XmlDataSource1.Data = _testLib.GetGridXML(_Num)
  GridView1.DataBind()
End Sub

其中 _testLib.GetGridXML 是一个函数,它根据传入的 _Num 返回 XML 字符串。

asp.net vb.net gridview pagination .net-2.0
3个回答
1
投票

如果没有看到你的代码,很难说......我推测你有条件地分配数据,即:

If Not IsPostBack Then
   MyXMLDataSource.Data = "...some xml..."
End If

在这种情况下,回发时它将为空,并且您会得到例外。可能是别的东西,但话又说回来,没有代码......

更新

既然您添加了更多信息...

您必须在 Page_Load 上有类似上面的代码。既然您没有在这里提供,我想您已经提供了。如果不这样做,每次加载时都会出现空引用异常。

考虑到这一点,您可以在单击某些按钮时分配数据,而不是在 PageIndexChanging 上分配数据。

单击按钮,页面加载,分配数据,网格显示它。然后,您单击网格的下一个链接,页面再次加载,PageIndexChanging 被触发,但您的单击事件没有 - 那么分配在哪里?

据我所知,要么在 Page_Load 上分配 Data 属性每次,要么在所有后续事件中执行此操作,即页面更改、排序等。

顺便说一句,以声明方式分配 XmlDataSource 时不必调用 DataBind。


1
投票

如果您在 PreRender 事件上进行数据绑定,它应该可以工作

由于 XML 数据源是动态设置的,如果您在 PageLoad 上设置它,则在此阶段所有页面元素可能不存在。


0
投票

您是否正在实现 OnPageChanging 事件?通常,您需要实现它并使用事件参数中的 e.NewPageIndex 属性在 gridview 中设置它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.