- - PR -
DataGridのページングについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-05-11 17:54
ページングについて教えてください。
GUIからの設定で、『 < 』,『 > 』は、表示させることが出来ました。 現在、データ数30件の中、最大表示5件なので 『 > 』を押下することによって 次ページに進めるのかと思っていたのですが、『 > 』がただの記号で、 リンク(押下)出来ません。 当サイトの[ASP.NET]DataGridコントロールでページを表示するには?等は 読んだのですが、C#のサンプル例は理解できないもので…。 .ASPX側で必要な記述を教えてください。 | ||||
|
投稿日時: 2004-05-13 15:44
DataGridのIDがDataGrid1です。
1.DataGrid1のプロパティ設定(プロパティビルダのページング) ・ページングを許可をチェック ・ページサイズを指定する:【5】 ・移動ボタンの表示をチェック ・モード:【次へ、戻るボタン】 ・[次のページ]ボタンの設定:【>】 ・[前のページ]ボタンの設定:【<】 2.ページボタンが押されたときのイベント処理 Private Sub DataGrid1_PageIndexChanged _ (ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) _ Handles DataGrid1.PageIndexChanged DataGrid1.CurrentPageIndex = e.NewPageIndex End Sub 自分でHTMLのイベント記述とかを書き換えない限り これでページングはできると思うのですが。 基本的すぎる、的外れだ、といったことを書いていたらスイマセン。 初心者なので... | ||||
|
投稿日時: 2004-05-13 16:58
wakabaさんありがとうございます。
ちなみに、HTML部分のDataGrid個所に、 OnPageIndexChanged="DataGrid1_PageIndexChanged" は、 存在していないのでしょか?? | ||||
|
投稿日時: 2004-05-13 17:10
DataGrid1のプロパティ設定(プロパティビルダのページング)
・ページングを許可をチェック ・ページサイズを指定する:【5】 ・移動ボタンの表示をチェック ・モード:【次へ、戻るボタン】 ・[次のページ]ボタンの設定:【>】 ・[前のページ]ボタンの設定:【<】 上記により、 HTML部には、 PageSize="15" AllowPaging="True" が書き込まれます。(<>部省略) 小生はさらに OnPageIndexChanged="DataGrid1_PageIndexChanged" を追加しました。 ------- Private Sub DataGrid1_PageIndexChanged (ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) _ Handles DataGrid1.PageIndexChanged DataGrid1.CurrentPageIndex = e.NewPageIndex End Sub ====================== 上記の設定で実行するとエラーとなり『Private Sub DataGrid1_PageIndexChanged(source As Object, e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)' は 'Private' であるため、このコンテキストではアクセスできません。』と表示されました。 これにより、Private でなく、Public Sub にしてみるとエラーは起きませんでしたが、『>』のリンクボタンを押すと、グリッドが消えてしまい、次ページ目は表示されませんでした。 設定に不備等ありましたら、ご教授願います。 | ||||
|
投稿日時: 2004-05-14 01:23
いていて。さんこんばんは。
> OnPageIndexChanged="DataGrid1_PageIndexChanged" を追加しました。 とのことですが、 Private Sub DataGrid1_PageIndexChanged (ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) _ Handles DataGrid1.PageIndexChanged としているので、必要ないはずです。 (プロシージャをPublicにする必要もなくなります。) 参考:Visual Basic 言語リファレンス Handles また、 > グリッドが消えてしまい、次ページ目は表示されませんでした。 これは、DataSourceの設定及びDataBindを行っていないからだと思います。 リファレンスにもサンプルがのってますよ。 参考:DataGrid.PageIndexChanged イベント | ||||
|
投稿日時: 2004-05-14 09:38
Heさん、こんにちわ。
『Handles DataGrid1.PageIndexChanged 』としていたら良いのは了解しました。 >> グリッドが消えてしまい、次ページ目は表示されませんでした。 > これは、DataSourceの設定及びDataBindを行っていないからだと思います。 現在、 Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged DataGrid1.CurrentPageIndex = e.NewPageIndex …@ DataGrid1.DataSource = dtjisseki …A DataGrid1.DataBind() …B End Sub ----- Aは必要無い気もしたので、ある場合(@AB)とコメントアウトした場合(@B)で試した のですがどちらも変わらず、次ページ目は表示されませんでした。 また、『Private Sub DataGrid1_PageIndexChanged〜』個所に、ブレークポイントを 置いていたのですが、ブレークポイントに引っかからなかったので、この関数には 飛んできていないと思っているのですがいかがな物でしょうか? もちろん、DataGridの名称は、「DataGrid1」で一致しています。 記述個所なのですが、現在 XXXXX.aspx.vb に記述しています。DataGrid1が存在するのは XXXXX.aspx です。記述個所にも問題があるのでしょうか? | ||||
|
投稿日時: 2004-05-15 13:40
以下を確認してください。
・DataGridやPageでViewStateが有効になっているか否か −EnableViewStateプロパティの値やPageディレクティブで確認できます。 参考:.NET TIPS DataGridコントロールでビューステートを使用せずにページ表示するには?
どちらに記述しなければならない、ということはありませんが、 VisualStudio.NET をお使いであれば、XXXXX.aspx.vbに記述するのが一般的です。 参考:Insider.NET 会議室 ASP.NETのコーディングスタイル | ||||
|
投稿日時: 2004-05-17 09:26
ご回答ありがとうございます。
しかしまだ、ページングが成功していません。 現状として、下記のようになっています。 また、Private関数にしていると、 『 説明 : この要求の処理に必要なリソースのコンパイル中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソース コードに変更を加えてください。 コンパイラ エラー メッセージ: BC30390: 'XXXXXXXX.SK_TEST.Private Sub dgSKJisseki_PageIndexChanged(source As Object, e As System.Web.UI.WebControls.DataGridPageChangedEventArgs)' は 'Private' であるため、このコンテキストではアクセスできません。』 との、エラーになります。Privateをはずして、Subにするとエラーは無くなりますが、 ページングは実現できませんでした。 どうか、小生のページング化実現にご協力の程、お願いいたします。 ------------------------------------------------------------------------------ *.aspx のDataGridの設定 <asp:datagrid id="dgSKJisseki" style="Z-INDEX: 104; LEFT: 8px; POSITION: absolute; TOP: 192px" runat="server" Height="144px" Width="776px" AllowPaging="True" PageSize="20" BorderStyle="None" BorderColor="#CCCCCC" BorderWidth="1px" BackColor="White" CellPadding="3" EnableViewState="False" OnPageIndexChanged="dgSKJisseki_PageIndexChanged"> *.aspx.vbの設定 Private Sub dgSKJisseki_PageIndexChanged(ByVal source As System.Object, _ ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs _ ) Handles dgSKJisseki.PageIndexChanged dgSKJisseki.CurrentPageIndex = e.NewPageIndex dgSKJisseki.DataSource = dtJisseki dgSKJisseki.DataBind() End Sub |