2

私はウェブパーツを持っていて、ドロップダウンリストとグリッドビューがあり、ドロップダウンとグリッドビューの周りにupdatepanelを使用しています。グリッドビューでは、日付ピッカーとしてテキストボックスがあります。そのページに移動してテキストボックスをクリックすると、日付ピッカーが表示されますが、すぐにドロップダウンの項目を変更すると、ポストバックがトリガーされ、日付ピッカーが返されません。

これが私が使用しているjqueryコードです。このコードを変更すると、updatepanelが機能しなくなります。

<script type="text/javascript">
     var $ = jQuery.noConflict();
     $(function () {
         $('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
         $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });

     });

</script>
4

3 に答える 3

2

更新パネルが非同期ポストバックを実行すると、すべてが消去されます。再バインドする必要があります

<script type="text/javascript">    

$(function () {
     BindEvents();
 }); 


function BindEvents() {

           var $ = jQuery.noConflict();

             $('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
             $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
             $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
             $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
        }
</script>

そして、更新パネルで、このようにjqueryイベントを再度リロードします

 <asp:UpdatePanel>
      <ContentTemplate
           <script type="text/javascript">
                          Sys.Application.add_load(BindEvents);
           </script>

           <!-- your stuff in the update panel -->
      </ContentTemplate>
    </asp:UpdatePanel>
于 2012-12-06T20:56:56.760 に答える
0

これはうまくいくはずです。

var $ = jQuery.noConflict();
$(document).ready(function(){
   BindEventHandler();
});
$.ajaxStop(function(){
   BindEventHandler();
});

function BindEventHandler(){
$('input[id*="txtftrNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtNeededBy"]').datepicker({ dateFormat: 'dd-M-y', changeMonth: true, minDate: 0 });
         $('input[id*="txtftrQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
         $('input[id*="txtQty"]').autoNumeric({ aSep: '', vMax: '999999', vMin: '0', wEmpty: 'zero', mDec: null });
}
于 2012-12-06T20:44:41.517 に答える
0

こうやってみる

$(function(){
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(BindEventHandler);
     BindEventHandler();
});
于 2012-12-06T20:53:33.163 に答える