プレースホルダに項目を表示/非表示、カスタムテンプレートコントロールをasp.net/ajax

StackOverflow https://stackoverflow.com/questions/1706705

質問

私は、カスタムユーザーコントロール(ボタン)ボタンをスタイルにjqueryのを使用し、状態/ポストバック/非=ポストバックなどの管理を含むカスタムテンプレートコントロール(ツールバー)を持っています。

ボタンの数は、プレースホルダで隠されているとのいずれかのボタンを押すときに表示されます。

に関してすべてのボタンはjqueryのビューステートがプレースホルダで見えないように、ボタンの上に失われているがポストバック(PageRequestManagerを使用してのUpdatePanel内のAJAXスタイル)上で開始しているようだ。

これは問題であるように思われるテンプレートコントロール内のプレースホルダのビューステートやボタンに固有のものです。これは通常、私は何かが欠けています疑い、非AJAX環境で動作します。

私は感謝を考えますすべてのコメントます。

コードは、さまざまな部分に位置しており、それは(私はこのdoesntのヘルプを知っている)完全に切断されますので、おそらくない価値が貼り付け

役に立ちましたか?

解決

私はここで自分の質問に答える必要があり感じます:

代わりにCSSを使用したプレースホルダまたはdivを使用しての

、UpdatePanelsは、DIVまたはレンダリング・オプションに応じスパンのいずれかでレンダリングされています。この場合、ただのUpdatePanelを隠そうとするのではなく作成のdivまたはスパンを非表示/新しい外容器を示します。

他のヒント

私の記憶が正しければ、彼らはfalseに見えるセットを持っている場合は、

、ASP.NETコントロールは、そのライフサイクルを終了していません。意味、レンダリング()のようなものが呼び出されていない、とのViewStateは(理にかなっている)ものの一つでなければなりません。 AJAX / Javascriptを一緒に更新パネルを使用すると、本当に難しいことですが、非常にうまく機能しません。これがどれだけASP.NETコントロールと更新パネルの仕事です。

私の提案は、のいずれかを使用更新パネルで、またはJavaScriptを使用して、両方ではありません。

あなたは簡単にjQueryの$ .post /取得し、HTMLにコードのセクションを交換するには、Webサービスの呼び出しから返されます。

使って何をするか、更新パネルをエミュレートすることができます
function myButtonClick(event){
    $.post("path/to/webservice", {data1: "data1"}, function(data, status){
        $("#myPanel").replaceWith(data);
    });
}

あなたはJSは、更新パネルを介して更新されたコードに添付がある場合は、最終的にあまりにも他の問題に実行されます。例:あなたは、このようなASP.NET AJAXコントロールツールキットのコントロールの一つとして、それぞれが彼らにJSを添付した項目のリストを持っている、とあなたは更新パネルを使用してページからこれらのいずれかを削除した場合、JSは、フックするために使用同期しなくなりますアップ制御します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top