2013-02-28 78 views
0

我有2个文本框控件,在页面加载时使用j-query预填充一些默认日期。所以当页面加载时,我的GridView应该根据这两个文本框控件中的日期加载一些数据。但问题是GridView没有加载页面加载的任何数据,但GridView只在单击填充gridview的Generate Report按钮后才加载。我试图调用从页面加载填充gridview的函数,但它没有帮助。所以我发现这个代码触发按钮单击事件,它似乎工作,但问题是,它保持循环和循环...请帮助我打开任何建议。由于 这里是J-查询触发该事件btnClick却是不断循环..如何从页面加载启动按钮单击事件

<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> 
+0

您的按钮是否触发回传?如果是这样,你的代码将无休止地执行:调用点击,回发,加载页面,调用点击,回发,加载页面等... – mattytommo 2013-02-28 15:51:16

+0

为什么不把你的按钮的逻辑移动到页面加载或在页面加载时调用它以及按钮点击,这样你就不必第一次物理地点击按钮 – Pete 2013-02-28 16:03:07

+0

我将按钮点击逻辑移动到我的页面加载中,但仍然没有帮助。我认为我的页面在加载2个文本框控件之前加载得更快。 – moe 2013-02-28 16:06:35

回答

0

单击处理您正尝试对其他码触发最有可能通过$(document).ready()附加。可能发生的事情是,您在处理程序连接之前触发事件。解决方法是使用setTimeout: 改为使用它。

$("document").ready(function() { 
    setTimeout(function() { 
     $("[id*='btnClick']").trigger('click'); 
    },10); 
}); 
+0

我做到了这一点,但仍然是循环。我怀疑页面加载甚至比2个文本框控件被填充之前更快地发射。 GridView会根据这些控件中指定的日期范围进行填充。 – moe 2013-02-28 16:08:48

0

我认为你的按钮发射回发,这是什么导致循环。

为了解决这个问题,你可以把需要更新的一个Ajax面板内