私はいくつかのタイルを表示するWebサイトで作業しています。タイルの高さは、挿入されるイメージとテキストによって異なる場合があります。すべてのタイルが同じ高さを達成することを保証するために、私は頭の中で次のスクリプトを書かれている:Ajaxポストバックでスクリプトが実行されない
function BindEvents()
{
$(window).load(function()
{
var maxHeight = Math.max.apply(null, $(".producttile").map(function() {
return $(this).height();
}).get());
$('.producttile').height(maxHeight);
maxHeight = Math.max.apply(null, $(".clistdiv").map(function() {
return $(this).height();
}).get());
$('.clistdiv').height(maxHeight);
});
}
上記のスクリプトは、下のようにデータリストにバインドされています。これは結合、今
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<hr width="100%" noshade/>
<script type="text/javascript">
Sys.Application.add_load(BindEvents);
</script>
<asp:DataList
ID="DataList1"
runat="server"
onitemcommand="DataList1_ItemCommand1"
class="itemsdatalist"
RepeatDirection="Horizontal"
RepeatLayout="Flow"
onload="DataList1_Load">
<ItemTemplate>
...........rest of the code
とタイル自動サイズ設定は、ページが最初にロードされたときに正常に機能します。ボタンがajaxコールを起動し、より多くのタイルを取り込み、この更新パネルを再更新します。ここに問題があります。
BindEvents()
は再度呼び出されないため、タイルのサイズは異なります。タイルのサイズは変更されていますが、再度調整されることはありません。
私は更新パネルのコンテンツテンプレート内にスクリプトを保存しようとしましたが、それはうまくいっていますが、不思議は全くありませんでした。
助けてください。
$(window)の代わりに$( "#UpdatePanel1")をロードしてください。 – Sterling
こんにちは、クラスとIDでupdatepanelコントロールのソリューションを試してみましたが、 –
ContentTemplateがロードされるたびにこの関数が呼び出されるので、window.loadを完全に削除しようとしますか?あなたのBindEvents関数でconsole.logを実行し、呼び出されているかどうかを確認します。 – Sterling