2012-05-09 5 views
2

私は、Modal PopUpに表示されるUpdate PanelのテキストボックスにSession Variablesを渡すことについて質問します。 これは私がこれまで持っているコードです:ASP.NETのセッション変数がModalBoxの以前の値を返しますか?

ASPXのCODE:BEHIND

 <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(C#の):

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コントロールを持っていますアドレスなど...ユーザーが行内のリンクをクリックすると、その行の名前フィールドの値がセッション変数として保存されます。 Modal PopUpが表示されます。 Modal PopUpはSession変数として保存されたNameを表示します。

コードの種類の作品。私が経験しているのは、行をクリックすると、Modal PopUpのLabel1.Textが空であるということです。したがって、PopUpを閉じて別の行の別のリンクをクリックすると、PopUpは以前にクリックされた行の名前を表示します。

つまり、1行目が「Kevin」、2行目が「Nathaniel」で、1行目のModal PopUpを開くリンクをクリックすると、PopUpに「Kevin」と表示されます。しかし、それはしません。アプリケーションを再構築した後に初めてリンクをクリックすると、何も表示されません。しかし、私がrow1をクリックした後に2行目をクリックすると、Modal PopUpは以前にクリックした行の値を表示します。つまり、 "Nathaniel"になると思います。

私は誰もが混乱しないことを願っています。私は初心者で、私はちょうどコードなどの例で、私を助けることができれば、私はそれを感謝したいので、この物に入っている。

ありがとう。とても有難い。

答えて

2

「ロード」イベント(panel_Loadは)前に「クリック」イベント(LinkButton1_Click)を発生するので、それだけで以前値を見ています。

クイックフィックスは、「クリック」イベントでもラベルを設定することです。 ViewStateがラベル(ick!)に対して有効にされていない限り、は、更新がいつ/どのように行われるかに応じて、「読み込み」にも設定する必要があります。

ASP.NET Page Life Cycle OverviewおよびASP.NET Application and Page Life Cycle: Page Eventsを参照してください。

ハッピーコーディング。

+0

ありがとうございます。それは完全に機能します。とても有難い! :) –

+0

@KevinPよろしくお願いします。 ASP.NETのライフサイクルはかなり複雑です... –

関連する問題