- - PR -
DataGridのページングについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-05-17 17:27
皆様、お世話になっております。
Sub dgSKJisseki_PageIndexChanged( 〜 ) Handles dgSKJisseki.PageIndexChanged イベントには、飛ぶ様になりました。 しかしながら、問題があります。 条件が可変するSQLをFiLLし、任意で作成したTableに入れる為、 dgSKJisseki.AutoGenerateColumns = False としていました。 これを、Trueにすることによって、イベント認識はするようになりましたが、 Falseを解除してしまった為、DataGridに同じデータが2つ分の表示されてしまいました。 Falseにしていたのは、Table作成時に項目幅等を設定したかった為です。 dgSKJisseki.AutoGenerateColumns = False のままで、イベントを 取れるように出来る方法はあるのでしょうか? | ||||
|
投稿日時: 2004-05-18 01:13
前にも書きましたが、コードビハインド側でイベントをハンドルしているのであれば、 <asp:datagrid 〜 OnPageIndexChanged="dgSKJisseki_PageIndexChanged"> とする必要はありません。 PostBack後にグリッドが描画されないのは、ViewStateを無効にしているためです。 (『EnableViewState="False"』としているから。) 前出の.NET Tipsはご覧になりましたか? ViewStateが無効になっていると、 DataSourceの内容や、現在のページ番号などが、自動的には保存されなくなります。 そのため、自前でその辺の処理を記述する必要があるのです。 ViewStateについては、以下も参考になります。 参考:[ASP.NET]ビューステートに保存されるものは? | ||||
|
投稿日時: 2004-05-18 09:07
ページング処理が上手く出来ましたので、ご報告したします。
HTML部分にダミーのTemplateColumnsを追加 <asp:DataGrid id="grdXXX" runat = "server" OnPageIndexChanged="grdXXXChanged"> <Columns> <asp:TemplateColumn></asp:TemplateColumn> </Columns> </asp:DataGrid> コード部分 grdXXX.Columns.Clear()を追加 これにより、AutoGenerateColumns=Falseでも問題ありませんでした。 皆様方、色々と教えていただきありがとうございました。 | ||||
|
投稿日時: 2004-05-18 10:34
Heさんもおっしゃっていましたが、、、
<asp:DataGrid ・・・ OnPageIndexChanged="grdXXXChanged"> の記述はしなければならないんでしょうか? ハンドルしたほうが楽な気もするんですが。 私も以前、同様のことをしてみたことがありますが、 そのときは以下のように記述しました。 Public Sub grdXXXChanged _ (ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs) grdXXX.CurrentPageIndex = e.NewPageIndex また、EnableViewState=Falseにしたときも、 表示させるページのインデックスを自分で保持しておいて、 Page_LoadイベントでIsPostBackのときに グリッドへのデータバインドとページインデックスの指定をしてました。 いつもAutoGenerateColumns=Falseにしてますけど、 特に問題ありませんでしたよ。 ダミーの記述もしたことないです。 | ||||
|
投稿日時: 2004-05-19 19:48
おそらくGotDotNetからの情報だと思います。
DataGridに列を動的に追加(DataGrid1.Columns.Add(column))しているときのお話です。 列を動的に追加していなければ、wakabaさんがおっしゃっているやり方でページングできます。 | ||||
|
投稿日時: 2004-05-20 00:00
こんばんわ。
Heさんの推測とおりGotDotNetからの情報です。 DataGridに列を動的に設定していました。 まだ、.NETを始めてあまり経ってなくどの部分を 皆様に提示するとよいのかすらつかんでない状態です。 皆様方、色々と教えていただきありがとうございました。 |