更新パネル(モーダルポップアップに表示される)のテキストボックスにセッション変数を渡すことについて質問があります。これは私がこれまでに持っているコードです:
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;" />
コードビハインド(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があります。ユーザーが行のリンクをクリックすると、その行の名前フィールドの値がセッション変数として保存されます。次に、モーダルポップアップが表示されます。モーダルポップアップには、Session変数として保存された名前が表示されます。
コードのようなものです。私が経験しているのは、行をクリックすると、モーダルポップアップのLabel1.Textが空になることです。したがって、PopUpを閉じてから別の行の別のリンクをクリックすると、PopUpには前にクリックされた行の名前が表示されます。
つまり、行1の名前が「Kevin」で行2の名前が「Nathaniel」の場合、リンクをクリックして行1のモーダルポップアップを開くと、PopUpに「Kevin」と表示されるはずです。しかし、そうではありません。アプリケーションを再構築した後、初めてリンクをクリックすると、何も表示されません。ただし、行1をクリックした後に行2をクリックすると、モーダルポップアップに前にクリックした行の値が表示されます。つまり、「ナサニエル」であると予想される場合は「ケビン」です。
誰かを混乱させなかったといいのですが。私は初心者で、このようなことを始めたばかりなので、誰かが私を助けてくれるなら、できればコードの例などを教えていただければ幸いです。
ありがとうございました。とても有難い。