2012-05-09 3 views
2

Modal PopUp에 표시되는 Update Panel의 텍스트 상자에 세션 변수를 전달하는 것과 관련하여 질문이 있습니다. ,ASP.NET의 세션 변수가 ModalBox의 이전 값을 반환합니까?

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    GridViewRow clickedRow = ((LinkButton)sender).NamingContainer as GridViewRow; 
    Label lbl_nme = (Label)clickedRow.FindControl("lbl_name"); 
    String string_nme = lbl_nme.Text.ToString(); 
    Session["Name"] = string_nme; 
    mpe.Show(); 
} 

protected void panel_Load(object sender, EventArgs e) 
{ 
    Label1.Text = (string)(Session["Name"]); 
} 

그래서 기본적으로 내가 이름을 가진의 GridView이 :

ASPX 코드 :

 <asp:TemplateField HeaderText="Link"> 
      <ItemTemplate> 
       <asp:LinkButton ID="LinkButton1" Text="Link" runat="server" OnClick="LinkButton1_Click" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:gridview> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="panel_Load"> 
    <ContentTemplate> 
     <asp:Button ID="OKButton" runat="server" Text="Close" /> 
     <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 

<asp:ModalPopupExtender ID="mpe" runat="server" TargetControlID="ClientButton" PopupControlID="UpdatePanel1" OkControlID="OKButton"> 
</asp:ModalPopupExtender> 

<asp:Button ID="ClientButton" runat="server" Text="Launch Modal Popup (Client)" style="display:none;" /> 

CODE BEHIND (C#을) 이것은 내가 지금까지 가지고있는 코드입니다 주소 등 ... 사용자가 행의 링크를 클릭하면 해당 행의 이름 필드 값이 세션 변수로 저장됩니다. 그런 다음 모달 팝업이 표시됩니다. Modal PopUp은 Session 변수로 저장된 Name을 보여줍니다.

코드 작업 종류. 내가 겪고있는 것은 행을 클릭 할 때 Modal PopUp의 Label1.Text가 비어 있다는 것입니다. 따라서 PopUp을 닫고 다른 행의 다른 링크를 클릭하면 PopUp은 이전에 클릭 한 행의 이름을 표시합니다.

다른 말로하면 행 1에 이름이 "Kevin"이고 행 2에 이름이 "Nathaniel"이고 링크를 클릭하여 행 1의 모달 팝업을 열면 Popup에 "Kevin" . 그러나 그렇지 않습니다. 응용 프로그램을 다시 작성한 후 링크를 ​​처음 클릭하면 아무 것도 표시되지 않습니다. 그러나 row1을 클릭 한 다음 2 번을 클릭하면 Modal PopUp은 이전에 클릭 한 행의 값 (예 : 'Nathaniel'이라고 예상되는 'Kevin')을 표시합니다.

아무도 혼동하지 않기를 바랍니다. 나는 초보자이고 방금이 물건에 들어갔다. 누군가가 나를 도와 줄 수 있다면 좋겠어. 코드 예를 들어 보자.

고맙습니다. 매우 감사.

답변

2

"로드"이벤트 (panel_Load는) 전에 "클릭"이벤트 (LinkButton1_Click)를 발생 그래서 그것은 단지 이전 값을 본다.

빠른 수정은 "클릭"이벤트에서도 레이블을 설정하는 것입니다. ViewState가 레이블 (ick!)에 대해 활성화되어 있지 않으면 레이블은 업데이트가 언제/어떻게 발생하는지에 따라 "로드"에 [다시] 설정되어야합니다.

ASP.NET Page Life Cycle OverviewASP.NET Application and Page Life Cycle: Page Events을 참조하십시오.

해피 코딩.

+0

감사합니다. 그건 완벽하게 작동합니다. 매우 감사! :) –

+0

@KevinP 여러분을 환영합니다. ASP.NET 수명주기는 아주 복잡합니다 ... –