Aクライアントはデータをサーバーに送信し、サーバーは蓄積します。
Bクライアントはサーバーに蓄積されたデータに変化があれば,
その都度GridViewで常時表示しています。
GridViewには新しいデータを下の行に、古いデータを上の行にという順序で表示しています。
GridViewにはスクローバーを付けています。
GridViewではいつも最新のデータを表示させたいので、いつも最下行を表示させるようにしたい。
つまり、新しい情報を1行表示させるたびに、1行スクロールアップさせたいのですが、スクロールの方法がわかりません。
言語はJavaScriptを使用しています。よろしくお願いします。
No.4
- 回答日時:
> 勘違いされているカ所があります、新しいデータを最下行に古いデータを最上行とソートして表示しています。
> クライアントがサーバーから全データ受信したときに、
> GridViewに1行追加し、
> GridView1.rows[X].cells[Y].InnerTextに保存しています。
なぜに最下行に追加するのか、ってのが私の疑問であり、手段が目的になっちゃってるんじゃないかと思う場所。
そもそもの目的が「最下行を表示する」ならこれ以上アドバイスは無いのですが、「新しく追加されたデータを画面内に表示させる」が目的なのであれば、応えは「スクロールさせる」ではなくて「スクロールさせなくても済む場所に表示する」なんじゃないかなぁと。
既存の表に新しいデータだけを追加するんじゃなくて、全件取得しなおせばよいのではないでしょうか。
その際に降順に並び替えれば(下に行くほど古いデータになるように)常に最新データが一番上に表示される、と。
"常にスクロールバーが一番下にくっついてることが「ちゃんと動いてるよ」とユーザーへアピールしていることになる" という目的もあるのならしょうがないですけどね。。。
No.3ベストアンサー
- 回答日時:
JavaScriptを記述している(クライアント・コールバックの関数)の最後に、
var ctrl = document.getElementById("スクロールバーを出しているコントロールのID");
ctrl.scrollTop=ctrl.clientHeight;
のように書けば…うまくいくような…気がします。(気のせいかも)
この回答への補足
回答ありがとうございます。
スクロールバーは下記の様に表示しています。
<div id="freezingDiv" style="OVERFLOW: auto; WIDTH: 1250px; HEIGHT: 765px; left: 20px; position: absolute; top: 100px;"
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding ="7" DataSourceID="ObjectDataSource1" style="font-weight:,,,,,,,,">
<Columns>
<asp:BoundField DataField="name",,,,,,, />
<asp:BoundField DataField="time",,,,,,, />
<asp:BoundField DataField="parent",,,,, />
<asp:BoundField DataField="Expr1",,,,,, />
<asp:BoundField DataField="Expr2",,,,,, />
<asp:BoundField DataField="Expr3",,,,,, />
<asp:BoundField DataField="color_lst",, />
</Columns>
<HeaderStyle BackColor="DarkBlue" Font-Bold="True" ForeColor="White" CssClass="Freezing" />
</asp:GridView>
</div>
上記の様にasp:GridViewをDivで囲んでいます。
この様な場合
var ctrl = document.getElementById("スクロールバーを出しているコントロールのID");
は
var ctrl = document.getElementById("freezingDiv");
でよろしいのでしょうか?
よろしくお願いします。
No.2
- 回答日時:
> 1回表示させるだけなら、回答の様にすれば良いと思います。
> ですが、DridViewを表示させた状態で、2秒に一度サーバーに蓄積データに変化があるかどうか問い合わせをしています。
> サーバーは変化があるとクライアントに蓄積している全データを送信します。
> クライアントはその全データをGridViewで表示しています。
> この時にGridViewを1行スクロールさせ最下行を表示したいのです。
なんどページをリロードしようとも降順で取得したデータを表示させるのですから常に最新のデータが一番上に表示されます。
スクロールすることで「最新データが入ってきたよ」をユーザーに教える事が目的ではなく、リロードしても最新データを見やすい場所に表示させることが目的ならコレで要件は満たしていると思いますが?
この回答への補足
回答ありがとうございます。
説明がヘタで申し訳ありません。
勘違いされているカ所があります、新しいデータを最下行に古いデータを最上行とソートして表示しています。
クライアントがサーバーから全データ受信したときに、
GridViewに1行追加し、
GridView1.rows[X].cells[Y].InnerTextに保存しています。
そうするとスクロールバーは短くなっていき、画面はスクロールしませんので、最新のデータを表示されません。最新のデータを表示させるためは、スクロールバーを下に移動すると表示できますが・・・
よろしくお願いします。
No.1
- 回答日時:
JavaScript 云々はさておいて
私なら新しいデータが上、古いデータが下に来るよう、降順でデータを取得します。
この回答への補足
回答ありがとうございます。
説明不足で申し訳ありません。
1回表示させるだけなら、回答の様にすれば良いと思います。
ですが、DridViewを表示させた状態で、2秒に一度サーバーに蓄積データに変化があるかどうか問い合わせをしています。
サーバーは変化があるとクライアントに蓄積している全データを送信します。
クライアントはその全データをGridViewで表示しています。
この時にGridViewを1行スクロールさせ最下行を表示したいのです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) IE・edgeで日増しに観られるサイトが減ってくる。 1 2022/10/04 22:40
- iCloud バックアップが完了したあと、機種変更前のスマホ、リセットしていい?? 1 2023/02/07 14:44
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- ドメイン・サーバー・クラウドサービス 自作サイトをサーバーにアップロードしたのですが… 2 2022/11/08 18:12
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Android(アンドロイド) スマホのデータ使用量に表示されるアプリ(10291)とはどんなアプリケーションでしょうか 1 2022/04/17 18:48
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- その他(Microsoft Office) エクセルでの作成データをモニター画面内に収めたい。 1 2022/04/23 11:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGrdViewに関連付けたデータ...
-
VBAでページ番号、ページ最終行...
-
【Excel VBA】先頭の「0」飛び...
-
GridViewにバインドせずにデー...
-
EXCEL2000のマクロ(ADO)にてCSV...
-
Listviewのデータを上から順番...
-
.NET SqlDataReader のレコー...
-
VBによる可変長ファイルの読み書き
-
GASでスプレッドシートの一番上...
-
エクセルマクロ小数点桁数
-
ExcelVBAを使って、値...
-
VBA:小数点以下の数字を取得で...
-
【Excel】指定したセルの名前で...
-
VB.NETで DataRow()を利用して...
-
変数名の取得
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定の文字を条件に行挿入とそ...
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
ASP C# データベースから1行取得
-
MSFlexGridのデータ表示位置の設定
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルマクロ小数点桁数
-
DataGridViewで表示に制限をつ...
-
スプレッドシート 一括でQRコー...
-
GridViewを自動的にスクロール...
-
DBへの重複更新を防ぐ方法について
-
エクセルVBA、数式の入ったセル...
-
GoogleEarthのKMLファイルでラ...
-
VB DataRepeaterにて条件で表示
おすすめ情報