0

ページの読み込み時にj-queryを使用して、いくつかのデフォルトの日付が事前設定された2つのテキストボックスコントロールがあります。したがって、ページが読み込まれると、私の GridView は、これらの 2 つのテキスト ボックス コントロールにある日付に基づいていくつかのデータを読み込むことになっています。しかし、問題は、ページの読み込み時に GridView にデータが読み込まれないことですが、グリッドビューにデータを入力する [レポートの生成] ボタンをクリックした後にのみ、グリッドビューが読み込まれます。ページの読み込みからグリッドビューを設定する関数を呼び出そうとしましたが、役に立ちませんでした。だから私はボタンクリックイベントを発生させるこのコードを見つけました.それは機能しているようですが、問題はそれがループし続けていることです. ありがとうこれはbtnClickイベントを発生させるjクエリですが、ループし続けています..

<script type="text/javascript">
$(document).ready(function(){
   //this calls the btnClick event but it is looping..
   $("[id*='btnClick']").click();
});
</script>

そして、これがページ上の私の他のコードです

<%@ Page Title="My Metrics" ClientIDMode="Static" Language="C#" MasterPageFile="~/Site.master" MaintainScrollPositionOnPostback="true" AutoEventWireup="true"
    CodeFile="Summary.aspx.cs" Inherits="About" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <link href="Styles/ui-lightness/jquery-ui-1.8.23.custom.css" rel="stylesheet" type="text/css" />
   <script src="Scripts/jquery-ui-1.9.2.custom.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.ui.datepicker.js" type="text/javascript"></script>

//here is the jquery that populates my textbox controls

       <script type="text/javascript">
           $(document).ready(function () {
               $("#txtStartClosingDate").datepicker();
               $("#txtEndClosingDate").datepicker();
               var startdate = new Date();
               startdate.setMonth(startdate.getMonth() - 1, 1);
               $("#txtStartClosingDate").datepicker("setDate", startdate);
               var endDate = new Date(); // current date
               endDate.setDate(1); // going to 1st of the month
               endDate.setHours(-1);
               $("#txtEndClosingDate").datepicker("setDate", endDate);
           });
    </script>
4

3 に答える 3

0

あなたのボタンがポストバックを起動していると思います。それがループの原因です。

それを修正するには、更新が必要なコントロールをajaxパネル内に配置できます

于 2013-02-28T15:53:54.987 に答える
0

トリガーしようとしているクリック ハンドラーは、おそらく $(document).ready() 経由でもアタッチされています。おそらく発生しているのは、ハンドラーがアタッチされる前にイベントをトリガーしていることです。解決策は setTimeout を使用することです: 代わりにこれを使用してください。

$("document").ready(function() {
    setTimeout(function() {
        $("[id*='btnClick']").trigger('click');
    },10);
});
于 2013-02-28T15:50:17.320 に答える
0

ローディング プロセスが提供するさまざまなイベントを利用します。

http://msdn.microsoft.com/en-us/library/ms178472.aspx

たとえば、イベント処理段階の最後に Page - LoadComplete = Raised を使用します。ページ上の他のすべてのコントロールを読み込む必要があるタスクには、このイベントを使用します。

于 2013-02-28T15:55:14.350 に答える