2012-02-09 9 views
0

iScrollというスクリプトが、iPadデバイス上で、verticleリストの1桁のスクロールメカニズムとして使用されています。 それが必要とするすべては、次のとおりです。iscroll jqueryが部分的なポストバックを破る

<script type="text/javascript" src="http://cubiq.org/dropbox/iscroll4/src/iscroll.js"></script> 

、以下:初めてページが読み込まが、しかし、これを使用して、リストにはasp.netのupadateパネル内にある場合に正常に動作します

var myScroll; 

function loaded() { 

    myScroll = new iScroll('wrapper'); 

} 

document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false); 

document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200); }, false); 

スクロールはポストバックを中断します。

リストの更新をトリガするイベントが発生したときに、私は私のC#からregisterstartupscriptを試してみました:

public string ipadScript() 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("var myScroll;" + Environment.NewLine); 
     sb.Append("function loaded() {" + Environment.NewLine); 
     sb.Append("alert('h');" + Environment.NewLine); 
     sb.Append("myScroll = new iScroll('wrapper');" + Environment.NewLine); 
     sb.Append("}" + Environment.NewLine); 

     sb.Append("document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);" + Environment.NewLine); 
     sb.Append("document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200); }, false);" + Environment.NewLine); 
     return sb.ToString(); 
    } 


ClientScriptManager cs = Page.ClientScript; 
cs.RegisterClientScriptBlock(this.GetType(), "ipadKey", ipadScript(), true); 

をしかし、これはどちらか動作するようには思えません。私はポストバックをチェックするためにスクリプトに追加した「警告」も受け取っていません。うまくいけば誰かが助けることができる?

SOLVED !!!!

function pageLoad(sender, args) { 
    if (args.get_isPartialLoad()) { 
myScroll = new iScroll('wrapper'); 
} 
} 

これはのみ

+0

も私はあなたのための – user987723

答えて

1

にasp.netの更新パネルで、更新パネルの更新後に呼び出されるべきmyScroll.refresh()リフレッシュ方法を動作します。 クライアント側:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 

function endRequestHandler(sender, eventArgs) 
{ 
    myScroll.refresh(); 
} 
0

ClientScriptManagerは、単にコードを登録しますが、<head>要素は更新パネルではないので、それは追加れることは決してありませんし、それがあっても実行されません。

あなたは、リストを再初期化するために、クライアント側のイベントハンドラを登録する必要があります:

$(document).ready(function() { 
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); 
}); 
var endRequestHandler = function() { myScroll.refresh(); }; 
+0

感謝をサイトにJSファイルを追加し、外部URLからそれを参照しないために持っていました私はクライアント側のイベントハンドラを登録する必要があると言うとき、実際にはasp.netコードで何かをする必要はありませんか?自分のオリジナルスクリプトと一緒に、ページのヘッダーに投稿したものを追加してください。 – user987723

関連する問題