質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

2650閲覧

ListViewコントロールで完了タイミングをしりたい

Qoo

総合スコア1249

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/11/10 07:35

編集2021/11/10 07:37

ASP.net WebFormでMySQLからデータを取得し、ListViewに表示しています。
コントロールの数にもよると思いますが、データが1500レコードくらいでかなり遅いです。

すべてのデータが表示されるタイミングというか完了イベント的なものを知りたいのですが
どのような方法がありますでしょうか

こちらのドキュメントを確認しましたが、それっぽいイベントがなく質問させていただきました。
https://docs.microsoft.com/ja-jp/dotnet/api/system.web.ui.webcontrols.listview.itemcreated?view=netframework-4.8

<asp:ListView ID="_listView" runat="server" DataSourceID="MySqlDataSource" DataKeyNames="item,lot" OnItemDataBound="_listView_ItemDataBound" OnLayoutCreated="_listView_LayoutCreated" > <EmptyDataTemplate> .. </EmptyDataTemplate> <ItemTemplate> .. </ItemTemplate> <LayoutTemplate> .. </LayoutTemplate> <SelectedItemTemplate> .. <//SelectedItemTemplate> </asp:ListView> <asp:SqlDataSource ID="MySqlDataSource" runat="server"  ConnectionString="<%$ ConnectionStrings:MySqlDataSorce %>" ProviderName="<%$ ConnectionStrings:MySqlDataSorce.ProviderName %>" SelectCommand="SELECT m.item as item,m.lot as lot,t.price1 as price1,t.price2 as price2 FROM m_syouhin m ,tbl_priceset t where m.item=t.item and m.lot=t.lot order by m.sort_id,m.item,m.lot"> </asp:SqlDataSource>

開発環境
Windows10 + VS2019
Mysql + IIS Express + Chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

すべてのデータが表示されるタイミングというか完了イベント的なものを知りたいのですがどのような方法がありますでしょうか

ListView のイベントには以下がありますが、この中で質問者さんの目的に合うものをご自分で探してもらうということになるかと思います。

参考にされている記事の ItemCreated イベントは「データが表示されるタイミング」ということですと早すぎと思います。ItemDataBound, DataBound, PreRender あたりではなかろうかと思います。ちなみに、順番は ItemDataBound ⇒ DataBound ⇒ PreRender となります。

イメージ説明

投稿2021/11/10 08:59

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Qoo

2021/11/10 09:08

SurferOnWww様 いつもありがとうございます。 ItemDataBoundなどはレコード行単位でイベントが発生するという理解なのですが、 例えばMYSQLで1500件のレコードがある場合、事前にレコード件数を取得しておいて ItemDataBoundでループ回数をカウントするしかないのでしょうか、、
退会済みユーザー

退会済みユーザー

2021/11/10 09:15

DataBound では遅すぎる、最後の ItemDataBound の時点が適当という場合はそのような手段を考える他なさそうな気がします。カウントするのはちょっとアレかと思いますが、いい案が思いつきません。
Qoo

2021/11/10 11:37

こちらもできました! 最初にレコード件数を取得した上で、ItemDataBoundでカウントするようにしてみたのですが、 結果的にItemDataBoundの終了タイミングとListView ですべてのデータが表示されるタイミングは かなりずれていました。 結局のところ、 HTMLのページ読み込み完了のタイミング=ListViewですべてのデータが表示されるタイミング という感じでしたので、jsでページ読み込み完了を待って処理するようにいたしました。 アドバイスいただきましてありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問