2010-05-10 4 views
1
문제는 라인 1 이후 get_datasource 호출 될 때이기 때문에 업데이트 데이터 그리드보기로 디스플레이되므로 ... 표시되는 그리드보기에서 데이터이다
protected void SubmitButtonClicked(object sender, EventArgs e) 
{ 
    System.Timers.Timer timer = new System.Timers.Timer(); 
     --- 
     --- 
    //line 1 
    get_datasource(); 

    String message = "submitted."; 
    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "popupAlert", "popupAlert(' " + message + " ');", true); 

    timer.Interval = 30000; 
    timer.Elapsed += new ElapsedEventHandler(timer_tick); 

    // Only raise the event the first time Interval elapses. 
    timer.AutoReset = false; 
    timer.Enabled = true; 
} 

protected void timer_tick(object sender, EventArgs e) 
{ 
//line 2 
    get_datasource(); 
    GridView2.DataBind(); 
} 

포스트 백 이벤트가 발생하지만 타이머 이벤트 핸들러가 timer_tick 이벤트를 호출 할 때 get_datasource 함수가 호출되지만 업데이트 된 데이터는 그리드보기에 표시되지 않습니다. timer_tick이 포스트 백 이벤트가 아니기 때문에 업데이트되지 않습니다.ASP.NET 타이머 이벤트

+0

휴, 즉 혼란 찾고 메시지입니다 - 씨 Ratnajyothi를 수 당신이 다시 그것을 읽을 수 있도록 포맷? 또한 ASP.NET 응용 프로그램에서 '타이머'를 사용하여 서버에서만 실행되는 포스트 백을 발생시킬 수 없습니다. JavaScript 클라이언트 스크립트를 대신 사용하는 것이 좋습니다. –

답변

1

그런 타이머는 사용할 수 없습니다. ASP.NET이 HTTP의 요청/응답주기를 숨기려고 시도하는 동안주기가 여전히 남아 있으므로 다시 게시 할 때 원하는대로 할 수는 없습니다. HTTP 응답에 응답하여 HTML 응답이 다시 전송된다는 것을 이해해야합니다 의뢰.

이유가 무엇입니까 이유가 이와 같은 타이머를 사용하려고합니까? 그것은 나에게 의미가있는 것처럼 보이지 않습니다. 달성하고자하는 것은 무엇입니까?

+0

버튼을 클릭하면 상태를 확인하기위한 특정 데이터가 전송됩니다. 제출 된 데이터는 그리드보기에 나타나지 않습니다. 그러나 검사가 다시 제대로 수행되지 않으면 30 초 후에 특정 데이터를 표시해야하므로 경과 한 후에 다시 데이터 소스를 호출하십시오. –

+0

당신은 제게 클라이언트 측 타이머를위한 자바 스크립트 작성을 도와 주시겠습니까 ... 15 분이 지나면 particluar 이벤트가 호출되어야합니다. –

+0

@KRatnajyothi 여기에 당신이 요구하는 것의 예가 있습니다 : http://www.w3schools.com/js/js_timing.asp –

4

구현 한대로 서버 쪽 타이머는 달성하려는 대상에서 작동하지 않습니다.

업데이트 패널에 타이머와 gridview를 모두 래핑하면 틱 이벤트가 발생할 때마다 타이머가 포스트 백을 트리거하고 데이터를 업데이트 할 수 있습니다. Heres는

좋은 블로그 게시물

당신은 가야 : http://mattberseth.com/blog/2007/08/using_the_ajax_timer_control_a.html

<asp:UpdatePanel runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:GridView ID="GridView2" runat="server"> 
     </asp:GridView> 
     <asp:Timer id="Timer1" runat="server" Interval="30000" OnTick="Timer_Tick" Enabled="false" /> 
     <asp:Button ID="Button1" runat="server" Text="Update" OnClick="SubmitButtonClicked" />    
    </ContentTemplate> 
</asp:UpdatePanel> 

서버 측 코드 :

private void Timer_Tick(object sender, EventArgs args) 
    { 
     get_datasource(); 
     GridView2.DataBind(); 

     Timer1.Enabled = false; 
    } 

    protected void SubmitButtonClicked(object sender, EventArgs e) 
    { 
     String message = "submitted."; 
     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "popupAlert", "popupAlert(' " + message + " ');", true); 

     get_datasource(); 
     GridView2.DataBind(); 

     Timer1.Enabled = true; 

    } 
+0

그러나 타이머가 만료 될 때마다 이벤트가 한 번만 트리거됩니다. –

+0

이 솔루션을 사용하여 답변을 업데이트했습니다. . 첫 번째 버튼에서 타이머를 활성화하고 타이머가 처음 실행될 때 해제하십시오 (참고 : 또한 제출 버튼을 updatepanel에도 포함 시키십시오) –

+0

updatePanel 내부 버튼을 표시하도록 다시 업데이트되었습니다. –