- PR -

Live Demo:DataListにページング機能を追加するには

投稿者投稿内容
Hiro
会議室デビュー日: 2002/03/29
投稿数: 18
投稿日時: 2002-11-13 11:03
Dr ADO.NETさんこんにちは
XXXさん 途中で割り込んですいません。
御教示して頂いたのに
レスが遅くなり申し訳ありません。

-------------------------------------------------------------------------------
DataListのFooterTemplateにButtonを配置するときは
DataListのOnItemDataBoundイベントでButtonのEnabledプロパティを
書き換えます。

コード:
-------------------------------------------------------------------------------

If e.Item.ItemType = ListItemType.Footer Then
CType(e.Item.FindControl("btnFirst"), Button).Enabled = False or True
:::
End If


-------------------------------------------------------------------------------
上記を参考にさせて頂きうまくいきました。
ありがとうございました。
これからも宜しくお願いします。
勘助
会議室デビュー日: 2002/11/10
投稿数: 14
投稿日時: 2002-11-16 01:15
Dr ADO.NETさん、ご回答ありがとうございます。

>DataListに並べ替えとページング機能を組み込むときは、
>DataAdapterのFill()メソッドを採用すべきでは?

⇒使用するように書いたつもりなんですが・・・以下がそうです。
 mySqlDataAdapter.Fill(DataSet, 3, 4, srcTable)
 単純にSelectしただけでは、全行がDBよりWebに返却されるのでこれを懸念している
 のです。Dr ADO.NETさんのようなTop指定をしない限り全行が返却されますが
 私が記述したデータ構造とSelest条件&ソート条件では単純にDr ADO.NETさんが
 示されているストアドでは実現できないかなぁと思いました。
 (Select * from syain order by 社員名)
 Dr ADO.NETさんは、私がやりたいような場合は、Dr ADO.NETさんが示されたやり方は
 できないので全行をWebに返却してキャッシュなどを利用してやるのが良いという思いで
 返信されたのでしょうか?

>性能と操作性が要求されるWebサイトを構築するときは、データベースのテーブルを
>DataSetに格納してWebサーバのメモリ上にCacheする方法もあります。
>DataSetからDataTable/DataViewを作成すれば、並べ替えをメモリ上で行って
>DataListにバインドできます。ページがポストバックされたときも、Cacheされた
>DataSetを再利用できます。

⇒これってPageDataキャッシュのことですよね?
 使用してみようと思ってるのですが、なかなか他の懸案に追われて調査できていないのですが
 上記でキャッシュされたデータは全ての接続ユーザーで利用可能なのでしょうか?
 またキャッシュと同じSelect文を発行した場合に.NET FWがキャッシュ有無を判断して
 有ればDB取得をやめキャッシュ取得を自動的に行うような仕様なのでしょうか?
 mySqlDataAdapter.Fill(DataSet,srcTable)の場合ですと、DataSetにはDBからではなく
 キャッシュより読み込まれたデータが入るということでしょうか?
 キャッシュの多用はWebサーバーのメモリを圧迫させる原因になるかと思いますが
 ASP.NETのパフォーマンスオブジェクトでキャッシュされているメモリ量を測定するカウンタ
 というのは存在すするのでしょうか?

お手数ですがご教授のほど、よろしくお願いいたします。
また、伝わりにくい表現が多くご迷惑をおかけいたしますことお詫びいたします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-11-16 05:14
< Dr ADO.NETさんは、私がやりたいような場合は、Dr ADO.NETさんが示されたやり方は
< できないので全行をWebに返却してキャッシュなどを利用してやるのが良いという思いで
< 返信されたのでしょうか?
そうです。

< これってPageDataキャッシュのことですよね?
そうです。
Data Cacheは、すべての接続ユーザ間で共有されます。

< キャッシュと同じSelect文を発行した場合に.NET FWがキャッシュ有無を判断して
< 有ればDB取得をやめキャッシュ取得を自動的に行うような仕様なのでしょうか?
すべてアプリケーション側で制御します。
コード:
Dim myDataSet As DataSet = Cache("myDataSet")
If myDataSet Is Nothing Then
  ' DataSetを生成してCacheする
  myDataAdapter.Fill(myDataSet,"tableName")
  Cache("myDataSet") = myDataSet
End If



< キャッシュの多用はWebサーバーのメモリを圧迫させる原因になるかと思いますが
Sliding Expiration Plicyを適用すればこの問題は回避できるのでは?
以下の例は、Cacheが1分以上使用されなかったときに無効になります。
つまり、メモリが解放されます。

コード:
strTime = DataTime.Now.ToString("T")
Cache.Insert("myDataSet", strTime, Nothing, _
  Cahce.NoAbsoluteExpireation, TimeSpan.FromMinutes(1))



Happy Programming!
Akio Kasai
勘助
会議室デビュー日: 2002/11/10
投稿数: 14
投稿日時: 2002-11-17 21:26
Dr ADO.NETさん、ご回答ありがとうございます。

Webサーバーに全行返却ですかー・・・。
利用者数が多ければ多いほど余計なデータを保持する分
Webサーバーのメモリは圧迫されますね。
この場合はスケールアウトで対応するしかないんでしょうね。
またDataキャッシュはアプリケーション間で共通なデータしか使用できませんね。
商品カテゴリなど・・・。
ユーザー個人個人で検索条件が異なる場合の返却データはやはりSessionに格納するのが
一番なんでしょうかね。ただSessionはタイムアウトが存在する分だけ、キャッシュより
やっかいですが・・・。

キャッシュのソース例を載せて頂きましてありがとうございました。
アプリケーション側で使用するしないは制御しないといけないのですね。
PageOutputキャッシュやPageFragmentキャッシュも同様なのでしょうね?
てっきり私はPageOutputキャッシュを使用した場合、該当ページのaspxインスタンスが生成
されることなくキャッシュをクライアントに返却するものと思っておりました。

引き続きこの二つのキャッシュについても勉強してみます。
ありがとうございました。
Anvi
会議室デビュー日: 2002/08/30
投稿数: 16
投稿日時: 2003-02-27 17:29
いつもお世話になっております。
ページング機能について調べてたのですがDEMOのソースを見せていただける事は
できないでしょうか?
なにぶん初心者でmySqlDataAdapter.Fill(DataSet, startRecord, maxRecords, srcTable) と書かれましてもよくわかりません。ソースを見ればイメージが湧くと思うのですが・・・宜しくお願いします。

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