Проблемы с подкачкой страниц в стандартном .net 2.0 Gridview с использованием VB.Net - PullRequest
1 голос
/ 03 апреля 2009

Я использую стандартный .net 2.0 Gridview, который использует XMLDatasource для заполнения Grid. Свойство Data источника XMLDatasource устанавливается динамически, что позволяет изменять вид сетки на основе входных данных.

Все это работает нормально, но у меня проблемы с подкачкой ...

Я установил для свойства AllowPaging значение «true» и для свойства PageSize - «10». GridView отлично заполняется в первый раз, показывая первые 10 записей и количество страниц в виде гиперссылок внизу, НО, когда я пытаюсь щелкнуть по любому из номеров страниц, чтобы просмотреть их, появляется окно с сообщением «Ссылка на объект не установлена к экземпляру объекта "

есть идеи, что я делаю не так ?? или есть что-то, что мне нужно сделать, что я пропустил ??

Код используется в настоящее время;

Gridview ...

<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>

XmlDataSource ...

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

код vb.net, который устанавливает свойство Data источника данных XML ...

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 - это функция, которая возвращает строку XML на основе переданного _Num.

Ответы [ 3 ]

1 голос
/ 03 апреля 2009

Это должно работать, если вы привязываете данные к событию PreRender

Поскольку источник данных XML задается динамически, если вы установите его в PageLoad, все элементы страницы могут не существовать на этом этапе.

1 голос
/ 03 апреля 2009

Трудно сказать, не видя ваш код ... Я бы предположил, что вы назначаете данные условно, то есть:

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

В этом случае оно будет пустым на обратной почте, и вы получите свое исключение. Может быть что-то еще, но опять же, без кода ...

Обновление

Поскольку вы добавили больше информации ...

Вы должны иметь что-то вроде кода выше на Page_Load. Поскольку вы не предоставляете это здесь, я полагаю, что вы делаете. Если вы этого не сделаете, вы получите исключение нулевой ссылки при каждой загрузке.

Имея это в виду, вы назначаете данные по некоторому нажатию кнопки, но не по PageIndexChanging.

Вы нажимаете кнопку, страница загружается, вы назначаете данные, сетка показывает их. Затем вы нажимаете следующую ссылку сетки, страница загружается снова, PageIndexChanging срабатывает, ваше событие щелчка - нет, где назначение тогда?

Из того, что я вижу, либо присваивайте свойство Data для Page_Load каждый раз или делайте это в всех последующих событиях, т. Е. При изменении страницы, при сортировке и т. Д.

Кстати, вам не нужно вызывать DataBind при декларативном назначении XmlDataSource.

0 голосов
/ 03 апреля 2009

Реализуете ли вы событие OnPageChanging? Обычно вам необходимо реализовать его и использовать свойство e.NewPageIndex из аргумента события, чтобы установить его в своем виде сетки.

...