- PR -

DataGridのページングについて

投稿者投稿内容
いていて。
会議室デビュー日: 2004/05/10
投稿数: 11
投稿日時: 2004-05-11 17:54
ページングについて教えてください。

GUIからの設定で、『 < 』,『 > 』は、表示させることが出来ました。
現在、データ数30件の中、最大表示5件なので 『 > 』を押下することによって
次ページに進めるのかと思っていたのですが、『 > 』がただの記号で、
リンク(押下)出来ません。

当サイトの[ASP.NET]DataGridコントロールでページを表示するには?等は
読んだのですが、C#のサンプル例は理解できないもので…。

.ASPX側で必要な記述を教えてください。
wakaba
会議室デビュー日: 2004/04/16
投稿数: 6
投稿日時: 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/10
投稿数: 11
投稿日時: 2004-05-13 16:58
wakabaさんありがとうございます。

ちなみに、HTML部分のDataGrid個所に、

OnPageIndexChanged="DataGrid1_PageIndexChanged" は、

存在していないのでしょか??
いていて。
会議室デビュー日: 2004/05/10
投稿数: 11
投稿日時: 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 にしてみるとエラーは起きませんでしたが、『>』のリンクボタンを押すと、グリッドが消えてしまい、次ページ目は表示されませんでした。

設定に不備等ありましたら、ご教授願います。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 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/10
投稿数: 11
投稿日時: 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 です。記述個所にも問題があるのでしょうか?
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-05-15 13:40
以下を確認してください。
 ・DataGridやPageでViewStateが有効になっているか否か
   −EnableViewStateプロパティの値やPageディレクティブで確認できます。
参考:.NET TIPS DataGridコントロールでビューステートを使用せずにページ表示するには?

引用:

記述個所なのですが、現在 XXXXX.aspx.vb に記述しています。DataGrid1が存在するのは
XXXXX.aspx です。記述個所にも問題があるのでしょうか?


どちらに記述しなければならない、ということはありませんが、
VisualStudio.NET をお使いであれば、XXXXX.aspx.vbに記述するのが一般的です。
参考:Insider.NET 会議室 ASP.NETのコーディングスタイル


いていて。
会議室デビュー日: 2004/05/10
投稿数: 11
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)