2011-12-01 4 views
5

나는 이것을 얼마 전에 시도했지만, 나는 그 문제를 해결할 수 없습니다. 영문 페이지 표시의 코드는 다음과 같은 :업데이트 패널이 내용을 업데이트하지 않습니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    Test<br /> 
    <asp:DropDownList ID="DropDownList1" runat="server"> 
     <asp:ListItem>1</asp:ListItem> 
     <asp:ListItem>2</asp:ListItem> 
    </asp:DropDownList> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <br /> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
    </form> 
</body> 
</html> 

에 이어 한 button1을 클릭 이벤트에 대한 코드 :

Public Class WebForm1 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

    Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged 
     Label1.Text = DropDownList1.SelectedIndex 

     UpdatePanel1.Update() 

    End Sub 
End Class 

당신이 내가 놓친 걸 말해 주 시겠어요는.

답변

2

드롭 다운에서 autopostback을 true로 설정하십시오.

사실 : 드롭 다운의 값이 변경 될 때마다 서버에 대한 포스트 백이 발생합니다.

하지만 Tim Schmelter의 답변을 들어보십시오. 드롭 다운이 변경되지 않으면 업데이트 패널 외부에 배치하고 업데이트 패널을 드롭 다운에 의해 비동기로 트리거해야합니다 (업데이트 패널에 트리거를 설정하지 않으면 모든 포스트 백에서 업데이트 패널). 드롭 다운의 내용이 변경되면 updatepanel에 넣습니다.

그러나 내가 말했듯이, 나는 오랫동안 그것을 사용하지 않고있다, 그 주제에 관해 내가 말한 모든 것을 다시 한번 확인하는 것은 좋은 생각이다. = p

추신 : Microsoft Update 패널은 쉽게 개발할 수 있지만 사이트를 매우 느리게 만듭니다. aspnet webservices 및 jQuery에 대해 자세히 알아보십시오.

+0

. 하지만 오토 포스트 백이하는 일을 말해 주실 수 있습니까? – surpavan

+0

고맙습니다. 도움이됩니다. – surpavan

1

Scriptmanager를 사용하기 전에 Scriptmanager를 배치해야합니다.

드롭 다운 목록 컨트롤 위에 놓습니다. 또한 선택한 인덱스 교환 이벤트의 드롭 다운 목록에서 AutoPostBack 속성을 true로 설정해야합니다.

<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 

    Test<br /> 
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostback="true"> 
     <asp:ListItem>1</asp:ListItem> 
     <asp:ListItem>2</asp:ListItem> 
    </asp:DropDownList> 

    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <br /> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
    </form> 
</body> 
+0

고맙습니다. – surpavan

1

은 당신이 당신의 DropDownList로에 TrueAutoPostback을 설정 잊어 버린. 기본값은 False입니다. 당신은 사용자가 DropDownList로를 변경하는 경우 귀하의 UpdatePanel에 비동기 포스트 백을 트리거 할 경우 드롭 다운이 외부에 있기 때문에

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.autopostback.aspx

는, 당신은 UpdatePanel에 대한 AsyncPostbackTrigger을 지정해야합니다. 그렇다 당신이 Ed said로 시작 부분에 스크립트 관리자를 배치 할 필요가에서

<Triggers> 
    <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" /> 
</Triggers> 

. ASP.NET - 아약스에 대한 자세한 정보를 정기적으로 여기를보세요 : 아래 http://msdn.microsoft.com/en-us/magazine/cc163354.aspx

+0

고맙습니다. – surpavan

1

올바른 마크 업, 그냥 페이지에 넣어 : 문제를 해결

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    Test<br /> 
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostback ="True"> 
     <asp:ListItem>1</asp:ListItem> 
     <asp:ListItem>2</asp:ListItem> 
    </asp:DropDownList> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="DropDownList1" 
       EventName="SelectedIndexChanged" /> 
    </Triggers> 
    </asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <br /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
</ContentTemplate> 
</asp:UpdatePanel> 
</form> 

관련 문제