2010-03-30 5 views

답변

79

UpdatePanel의 Triggers 속성을 사용하여 전체 다시 게시를 트리거하는 작업을 등록 할 수 있습니다.

PostBackTrigger 개체를 전체 포스트 백을 트리거해야하는 컨트롤의 ControlID를 포함하는 해당 속성에 추가하십시오. here에서

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     ... 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="myFullPostBackControlID" /> 
    </Triggers> 
</asp:UpdatePanel> 
+0

단추로 구성된 열이있는 Infragistics UltraWebGrid가 있습니다. 버튼을 클릭하면 해당 이벤트 핸들러가 실행되어 그리드가 새로 고침되지만 두 번째 클릭까지 눈금이 실제로 새로 고쳐지지는 않는 문제가있었습니다. 버튼을 UpdatePanel에 넣고 이러한 트리거를 추가하면 문제가 해결됩니다. – tsilb

12

:

비동기 포스트 백을 수행하는 대신 포스트 백을 야기하는 UpdatePanel 내부 컨트롤을 사용할 수 있도록 PostBackTrigger 컨트롤을 사용합니다.

<Triggers> 
    <asp:PostBackTrigger ControlID="controlID" /> 
</Triggers> 
+1

+1 - 너무 빨라요! – dugas

+0

흠. 그래, 그 UpdatePanel 내부에 예를 들어 페이지 번호가있는 GridView가 있으면 작동하지 않을 것이다. 새 페이지로 변경하면 트리거가 더 이상 작동하지 않습니다. – Fandango68

42

다른 사람이 없기 때문에 그냥 추가하십시오. 위의 방법을 사용하지 않고 한 줄의 코드에서 코드 숨김으로이 작업을 수행 할 수 있습니다. 단지를 Page_Load에 넣고 :

Visual Basic의

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID) 

을 나는 WebDataGrid 내부에하여 ImageButton을 사용하여 동일한 문제를 가지고 C#

ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID); 
+0

검색 시간이 끝난 후 아주 좋았습니다. 마침내 작동하는 솔루션이었습니다. 문제는 모든 컨트롤 (업데이트 패널 및 단추)이 코드 뒤에 만들어져 포스트 백 트리거를 설정할 수 없기 때문입니다. 감사! – OverMars

+2

할 수 있어야합니다.컨트롤이 생성되면 AddHandler를 사용하여 응답 서브 루틴에 대한 트리거를 생성 할 수 있습니다. – EvilDr

+0

절대적으로 옳습니다. 간단하고 바로 거기에서 저에게는 거의 발생하지 않았지만 당황 스럽습니다. 매우 훌륭하지만 .. – OverMars

0

.

대신 Webdatagrid의 preRender 안에 EvilDr의 Line을 넣습니다. 잘 했어!

for (int i = 0; i < wdgMyData.Rows.Count; i++) 
{ 
    ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel")); 
} 
0

그것의 모든 업데이트 패널에 당신의 Document.Ready 코드는 클릭에서 작동하도록 다시 전체 게시물을 수행 할 때 조금 까다로운 접근 방식뿐만 아니라,이 오래된 질문입니다.

1

function ResetDocumentReady() { 
     $("[id$=DummyButton]").click(); 
    } 

같이 정의 프론트 엔드의 기능을 업데이트 패널 외부 더미 버튼을 만들고이

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true); 

2처럼 뒤에 코드에서을 클릭 참고 :하지만 가장 좋은 방법은 방아쇠를 사용하는 것입니다. 답변은 @Thibault Falise 입니다.

관련 문제