2013-02-04 2 views
0

내 프로젝트에는 linkpanet이있는 updatepanel에 datarepeater가 있습니다. 사용자가 링크 버튼을 클릭하면 부분 포스트 백이 발생하고 링크 버튼의 텍스트 속성이 변경됩니다. 문제는 다음과 같습니다. 사용자가 동일한 버튼을 다시 클릭하면 웹 페이지에서 새로운 텍스트 값을 실제로 볼 수는 있지만 디버거가 이벤트에 도달하면 보낸 사람 객체는 텍스트 값이 이전 값이 아니라 이전 값임을 나타냅니다. 업데이트되었습니다. 왜 그런지 알아? 여기에 코드입니다 :linkbutton 텍스트를 변경할 때 이상한 동작이 발생했습니다.

<asp:LinkButton runat="server" ID="lbEdit" Text="Edit" EnableViewState="true" OnClick="edit_click" CommandArgument='<%# Eval("user.networkId") %>'></asp:LinkButton> 

코드 숨김 :

Protected Sub edit_click(ByVal sender As Object, ByVal e As EventArgs) 
    Dim btn As LinkButton = CType(sender, LinkButton) 
    Dim userId As String = btn.CommandArgument 
    If (btn.Text = "Edit") Then 
     btn.Text = "Save" 
    else 
     btn.Text = "Edit" 
    end if 
    end sub 
+1

테스트하려면 업데이트 패널을 주석, 페이지 전체 포스트 백을 수행 할 경우이 같은 문제가 있나요? –

+0

브라이언, 예, 업데이트 패널을 사용하지 않아도 문제가 계속 발생합니다. – jason

답변

0

그것은 당신의 가치를 재설정되도록 당신이 다시 게시에 데이터를 리 Y 인드하는 대부분의 경우. 그런 다음 버튼 클릭 이벤트가 발생하므로 Text을 올바르게 설정하고 있습니다. 그러나 다시 게시하면 텍스트가 재설정됩니다.

If Not IsPostBackDataBind 이벤트를 랩 :

If Not IsPostBack 
    'Bind your datasource 
End If 
+0

마이크에 감사드립니다. 리피터에 대한 데이터 바인딩을 의미합니까? 문제는, 내가 업데이트 패널을 사용하고 있기 때문에, 포스트 일지라도 (그리고 될 것입니다) 바인드를 계속하고 싶습니다. – jason

+0

@jason 예, 중계기 용입니다. 위의 코드를 추가하면 어떤 문제점이 있습니까? 대부분의 경우 다시 게시 할 때 데이터를 리 바인드 할 필요가 없습니다. – MikeSmithDev

+0

Mike,이 사용자 정의 컨트롤의 대부분 작업으로 인해 업데이트 패널이 실행되어 부분적인 포스트 백이 발생합니다. 예를 들어, 데이터 리피터에는 행과 열 (테이블)이 있습니다. 사용자가 열 머리글을 클릭하면 포스트 백에서 중계기를 정렬하고 중계기에 다시 바인딩합니다. 포스트 백에만 바인딩하면이 작업을 수행 할 수 없습니다. – jason

관련 문제