GridView を使用している検索画面があり、GridView で<asp:LinkButton>
、そのコマンド引数でその列の値を使用し、(Container.DataItemIndex+1)
クリックした項目の行番号を見つけます。これらGridview_RowCommand
の値をセッション変数に割り当てて、ポップアップウィンドウに渡すことができるようにしています。
検索画面に 2 つの行が表示され、最初の行をクリックすると正常に動作し、ポップアップ ウィンドウでセッション変数にアクセスできるとします。ただし、2行目のlinkbuttonポップアップウィンドウをクリックすると、最初に更新さGridview_RowCommand
れてから後で実行されるため、セッション変数の値が更新されません。
以下はaspxページの私のリンクボタンです:リンクボタンのクリックで呼び出されるポップアップウィンドウは、それぞれがaspxページに含まれる2つのフレームを持つHTMLページです。
<Columns>
<asp:TemplateField HeaderText="File Name" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:LinkButton ID="btn" runat="server" Text='<%#Eval("Empid")%>'
CommandName="Click" CommandArgument='<%#Eval("Empid") + ","
+ (Container.DataItemIndex+1)%>' OnClientClick='<%# Eval("Empid",
"window.open(\"abc.html\",null,\"location=0,status=0,toolbar=0
,menubar=0,resizable=1\",\"true\");")%>'/>
</ItemTemplate>
</Columns>
以下のコードは aspx.cs コードで、empid と Container.DataItemIndex+1 の値をセッション変数に格納しています。
protected void grdDisplayResult_RowCommand(object sender, GridViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Click":
{
string[] arg = new string[1];
arg = e.CommandArgument.ToString().Split(',');
Session["Empid"] = arg[0];
Session["RowNum"] = arg[1];
break;
}
default:
break;
}
}
ユーザーがリンクボタンをクリックするとポップアップするポップアップウィンドウもあります。