2010-01-26 6 views
6

누군가가 "추가"단추를 클릭하면 asp.net 페이지를 새로 고치고 싶습니다. 그러나 "추가"버튼은 다른 사용자 정의 컨트롤 내부에있는 사용자 정의 컨트롤의 일부이며 자식 컨트롤과 부모 컨트롤은 모두 업데이트 패널에 래핑됩니다. 아래 코드는 표시가 짧아서 사용자 컨트롤이 다른 사용자 컨트롤 안에있는 이유입니다다른 컨트롤의 컨트롤에서 asp.net 페이지 새로 고침

내부 첫 번째 컨트롤 : control2 내부 그리고

<ajax:UpdatePanel ID="Panel1" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
      <uc:Control2 ID="Custom2" runat="server" /> 
    </ContentTemplate> 
</ajax:UpdatePanel> 

<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
      <asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton> 
    </ContentTemplate> 
</ajax:UpdatePanel> 
+0

마찬가지로, UserControl (내 db에 레코드를 추가 한) UserControl에서 onclick 이벤트 추가 단추가있는 UserControl이 있습니다. 추가 단추를 한 번 클릭하고 브라우저 새로 고침 단추를 클릭 한 후 브라우저가 양식을 다시 게시하고 재 게시를 받아 이전 추가 이벤트를 다시 실행하여 중복 된 추가 작업을 광고합니다. Response.Redirect (상위 페이지)가 문제를 해결했습니다. @keltex의 답변보기. – condiosluzverde

답변

5

당신은 당신이 할 수있는 전체 페이지 (아닌 UpdatePanels 단지 내용) 다시로드하려면 다음

Page.Response.Redirect("mypagename.aspx"); 
+0

페이지가 동적으로 생성됩니다. Response.Redirect (Page.Url) 또는 무엇인가 할 수 있습니까? – user204588

+1

예. 그것은 아마 작동 할 것입니다. Response.Redirect (Page.Request.Url.절대 경로) – Keltex

1

부모 사용자 컨트롤을 제어 할 수 없다고 가정 할 때 부모 사용자 컨트롤 (FindControl)의 자식 컨트롤을 검색하여 컨트롤을 찾을 수 있습니다. 당신이 업데이트 패널에있어 이후

btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage); 

, 당신은 전체 페이지를 새로 고침 Response.Redirect(Request.RawUrl) 같은 것을 할 필요가있다 : 당신이 그것을에 대한 참조를 일단 그런 다음 이벤트 처리기를 추가 할 수 있습니다.

물론 부모 컨트롤을 제어 할 수 있다면 자신 만의 "AddClicked"이벤트를 만들고 가입 버튼을 링크 버튼에 전달하거나 LinkButton 자체를 public 속성으로 노출시킬 수 있습니다. 사용자 정의 컨트롤.

0

새롭게 추가 된 항목이 페이지에 표시되도록 페이지를 새로 고침하고 싶다고 가정하고 있습니까? 맞습니까? 그렇다면 AddButton_Click 이벤트의 일부로 데이터 컨트롤을 데이터 바인딩 할 수 있습니다. 예를 들어 항목을 표시하는 눈금이있는 경우 사용자가 추가 단추를 클릭하여 새 항목을 추가하는 경우 AddButton_Click 이벤트에 다음 코드를 삽입하여 데이터 컨트롤의 내용을 "새로 고침"하고 새로 추가 된 항목을 표시 할 수 있습니다 상품 :

protected void AddButton_Click(object sender, EventArgs e) 
    { 
     myGrid.DataBind(); 
    } 

희망이 있습니다.

0

이벤트 버블 링 (http://odetocode.com/code/94.aspx)은 어떻게됩니까? 다음과 같이 보이도록

<ajax:ScriptManager runat="server" ID="myScriptManager" EnablePartialRendering="true"></ajax:ScriptManager> 

그런 다음 Control2의 된 UpdatePanel 템플릿이 트리거를 추가

0

당신은 그러나 당신이 다음과 같이 스크립트 관리자가 구성되어 가정, 스크립트 관리자의 구성을 지정하지 않은 :

<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="AddButton" /> 
    </Triggers> 
</ajax:UpdatePanel> 

이것은 당신이 (를 Page_Load에서) 어떤 바인딩 된 데이터를 다시로드 할 수 있으며 전체 페이지와 내부 업데이트 패널뿐만 아니라 내용을 다시 렌더링하는 다시 게시를 트리거합니다.