2012-03-07 52 views
1

私は動的に作成されたコントロールに少し問題があります。私はasp.netページを使用してC#コードの背後にある。テーブルの行を生成しました(更新パネル内)。これらの行の1つに、内容と垂直スクロールバーで作成されたラベルがあります。 5秒ごとにポストバックを呼び出すタイマーもあります。ラベルのスクロールバー位置を維持する

Label diff = new Label(); 
diff.Style.Add("height", height + "px"); 
diff.Style.Add("width", "100%"); 
diff.BorderWidth = 2; 
diff.Style.Add("overflow-y", "scroll"); 
diff.Text = text; 
cell.Controls.Add(diff); 

問題は、ポストバックが発生すると、行が削除されて再び作成されるため、スクロール位置が失われることです。

私はポストバック後に同じ位置に設定できるように、変数内のスクロール位置を保持したいと考えています。これを行う方法はありますか?

+0

このシナリオはAJAXの主要な候補だと思います。 – Khan

+0

私はタイマーに少しAJAXを使用しますが、以前はそれを使用していませんでした。あなたはAJAXで私が探しているものを提案していますか? – Amaranth

答えて

3

jQueryプラグインScrollSaverを使用できます。

<script type="text/javascript" src="scrollsaver.min.js"></script> 

あなたがしなければならないのは、ページのスクリプトが含まれており、ポストバックが発生する前に、それがクッキーに各要素の位置が保存されますし、ページの再レンダリングするときにそれを復元しています。

+0

スクリプトをダウンロードして試しました。リフレッシュ時にエラーが表示される(未知のエラーなので、メッセージは役に立ちません)。リフレッシュ時にラベルがページに存在しないが、timer_tick関数で作成されている可能性があります。 – Amaranth

+0

@Amaranth:エラーはあなたには分かっていませんが、他の人にとってはそうではないかもしれません。だから、それを掲示しないのはなぜですか?何もIDの代わりに常に同じIDを割り当ててください。 "ID属性が設定された要素のスクロール位置だけがこのスクリプトで維持できることを覚えておいてください!" http://en.hasheminezhad.com/scrollsaver –

+0

"Microsoft JScriptランタイムエラー:Sys.WebForms.PageRequestManagerServerErrorException:サーバー上の要求の処理中に不明なエラーが発生しました。サーバーから返されたステータスコードは500です。各ラベルはすでに一意のIDを持ち、常に同じです。 – Amaranth

関連する問題