2009-03-25 5 views
0

형성 : 리피터의 OnItemCommand에서된 UpdatePanel rerenders가 나는 다음과 같습니다 ASCX이

<UpdatePanel Parent mode = Conditional> 
    <UpdatePanel1 mode = Conditional> 
    //A form here with textboxes, etc 

    //A repeater here with a linkbutton that causes a postback 

    </UpdatePanel1> 
</UpdatePanel Parent> 

을, 나는 양식 값을 얻을하고 설정합니다. 그것은 잘 작동하지만 양식의 다시 렌더링 (즉, 양식이 사라지고 다시 나타나는 깜박임)입니다. UpdatePanel에서이 문제가 발생하는 이유는 무엇입니까?

편집 : 양식과 중계기를 각각 다른 업데이트 패널로 분리하여 문제를 절반으로 해결 한 것 같습니다. 하지만 문제는 이제 서버 측 코드가 실행 되더라도 리피터의 linkbutton을 클릭하면 양식이 업데이트되지 않는다는 것입니다. 다시

편집 :

는 내가 무슨 일이 일어나고 있는지 알 것 같아요. 나는이 질문을하기 전에 1 개의 질문을 가지고있다. 양식은 다음과 같습니다

<tr> 
    <td> 
    <asp:checkbox id="chkSelect" runat="server" /> 
    <asp:label text="Something" runat="server" /> 
    <asp:textbox id="txtSomething" runat="server" /> 
    </td> 
</tr> 
<tr> 
    <td> 
    <asp:checkbox id="chkSelect2" runat="server" /> 
    <asp:label text="Something2" runat="server" /> 
    <asp:textbox id="txtSomething2" runat="server" /> 
    </td> 
</tr> 

나는의 LinkButton을 클릭하면 신경은 모두 만 텍스트 상자 컨트롤을 업데이트하는 것입니다. 나는 그 밖의 모든 것들을 그대로 유지하길 원합니다.

해당 컨트롤에서만 조건부로 업데이트를 트리거하는 방법이 있습니까? 내가 컨트롤의 상태 -

나는 (서버 측 처리의 많은 거기에 나는이 텍스트 상자의 값을 알기도 전에)

@Roselberg을 내가 JS를 사용할 수 있지만 오히려 그것을 피할 것 이해 관심이 없다는 사실은 스크립트에서 실제로 제어 할 수없는 하나의 거대한 JS 스크립트에서 클라이언트 측에 실제로 설정됩니다.

답변

0

ASP.NET AJAX의 아키텍처는 실제로 UpdatePanel 내의 전체 HTML을 덮어 씁니다. 값을 개별적으로 업데이트하지 않습니다. 기본적으로이 옵션에는 세 가지가 있습니다.

  • 텍스트 상자와 확인란을 별도의 업데이트 패널에 넣으십시오. 이 시나리오는 사용자 시나리오에서 작동하지 않습니다.
  • 포스트 백에서 값을 전송하여 컨트롤이 동일한 디스플레이로 유지되는지 확인하십시오. 실제로 덮어 쓰여지지만 동일한 값으로 덮어 쓰면 눈에 띄지 않아야합니다.
  • ASP.NET AJAX를 사용하는 대신 처리기를 다시 호출하는 다른 AJAX 메서드를 사용하십시오. 자바 스크립트를 사용하여 핸들러를 호출 한 다음 ASP.NET AJAX와 같은 컨트롤을 대체하는 대신 값을 개별적으로 업데이트하십시오.jquery get method 또는 client callbacks으로 쉽게 해결할 수 있습니다.
+0

세 번째 메서드에서 jquery를 사용하여 코드에서 이벤트 핸들러를 호출 할 수 있습니까? 나는 전에 get 메소드를 사용하지 않았다. ( – DotnetDude

+0

클라이언트 콜백 (jQuery를 사용하지 않고 ASP.NET 기능으로 빌드 됨)을 사용하여 codebehind의 메소드를 호출 할 수있다. 위의 마지막 글 머리 기호의 예제에 대한 링크를 추가했다. –

0

텍스트 상자 만 조건부로 업데이트하려면 자신의 UpdatPanel에 배치해야합니다. 해당 UpdatePanel이 링크 버튼에 의해 트리거되고 모든 것이 잘 작동하는지 확인하십시오.

난 당신이 내가 다른 모든 그들이 있던 방법을 유지하려는

무슨 뜻인지 정말 모르겠어요하지만.

체크 박스와 레이블은 포스트 백 중에 코드를 변경하는 경우에만 변경됩니다.

+0

각 텍스트 상자에 대해 1 개의 업데이트 패널이 필요합니까? 과잉은 아닌가? 하나의 업데이트 패널에서 모든 항목을 그룹화하고 싶지만 레이아웃으로 인해이 작업을 수행 할 수 없습니다. UpdatePanel이 업데이트해야하는 컨트롤 컬렉션을 지정하는 방법이 있기를 바랬습니다. – DotnetDude

+0

업데이트 할 컨트롤을 지정할 방법이 없습니다. UpdatePanel의 자식이어야합니다. – Daniel

관련 문제