2009-04-03 8 views
1

私はXMLDatasourceを使用してグリッドにデータを書き込むstandart .net 2.0 Gridviewを使用しています。 XMLDatasourceのDataプロパティは動的に設定され、グリッドビューは入力に基づいて変更できます。VB.Netを使用して標準の.net 2.0 Gridviewでページングの問題

すべてこれはしかし、私は、ページングの問題を抱えています正常に動作します...

私は「真」のAllowPagingプロパティを設定し、「10」にのPageSizeプロパティを設定しています。 GridViewは最初の10レコードとページ数を最下部にハイパーリンクとして表示しますが、ページ番号のいずれかをクリックしようとするとメッセージボックスがポップアップして「Object reference not setオブジェクトのインスタンスに "

私は間違って何をしているのですか?または私は私が逃している必要がある何かがある?

コードは現在使用されています。

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 ... XMLDatasourceのDataプロパティを設定

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

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文字列を返す関数です。

+0

Page_Loadに常にデータを割り当てるか、グリッドの並べ替え、ページインデックスの変更など(グリッドの状態を変更するもの)、すべてのセカンダリイベントにデータを割り当てます。私の更新された答えを参照してください... – Ruslan

答えて

1

それは...私はあなたが、条件付きすなわちデータを割り当てることを推測するだろうあなたのコードを見ずに言うのは難しいです。この場合

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

それが戻ってポストに空になると、あなたの例外を取得します。あなたはより多くの情報を追加しましたので、あなたはPage_Loadの上、上記のコードのようなものを持っている必要があります...

他の何かが、その後、再び、ノーコード...

更新

である可能性があります。あなたがここにそれを提供していないので、私はあなたがしていると推測します。そうしないと、各ロードでnull参照例外が発生します。

これを念頭において、一部のボタンクリックでデータを割り当てますが、PageIndexChangingではデータを割り当てません。

ボタンをクリックすると、ページが読み込まれ、データが割り当てられ、グリッドに表示されます。次に、グリッドの次のリンクをクリックすると、ページが再び読み込まれ、PageIndexChangingが発生し、クリックイベントは発生しません。私が見たものから、

、どちらかところでなど、Page_Loadの毎回上のDataプロパティを割り当てたり、並べ替えに、すなわちページ変更で、すべて後発事象でそれを行う

、あなたがいませんXmlDataSourceを宣言的に割り当てるときにDataBindを呼び出す必要があります。

+0

私は質問に使用されている現在のコードを含む – eMTeeN

+0

ありがとう!それは意味があると思う:)しかし、1つのことを言及するには、Viewstateがグリッドで有効になっている場合は、DataプロパティがPreRenderイベントでページロードとは対照的に設定されている方が効果的です。しかし、ViewStateがDisabledの場合、DataプロパティがPageLoadイベントで設定されていれば正常に動作します。 – eMTeeN

0

あなたはOnPageChangingイベントを実装していますか?通常、実装する必要がありますし、イベント引数からのe.NewPageIndexプロパティを使用してグリッドビューに設定します。

+0

データソースが宣言的に割り当てられている場合、私はそのことを前提としています。 – Ruslan

+0

OnPageChangingが実装されていない場合、別のエラーが発生します。具体的には、処理されません。 – Ruslan

+0

質問に使用されている現在のコードが含まれています – eMTeeN

1

あなたはすべてのページ要素は、この段階では存在しない可能性がありますPageLoad上でそれを設定した場合、XMLデータソースを動的に設定されているので、PreRenderイベント

であなたのデータバインディングを行う場合、それは動作するはずです。

+0

質問に使用されている現在のコードが含まれています – eMTeeN

関連する問題