我有一个搜索屏幕,我在其中使用 GridView,在 GridView 中,我<asp:LinkButton>
在它的命令参数中使用该列的值并(Container.DataItemIndex+1)
查找我单击的项目的行号。我在Gridview_RowCommand
会话变量中分配这些值,以便可以将它们传递给弹出窗口。
假设我的搜索屏幕已经填充了两行,点击第一行它工作正常,我可以在弹出窗口中访问会话变量;但是,当我单击第 2 行的链接按钮弹出窗口时,会先刷新,然后再Gridview_RowCommand
执行,因此我没有在会话变量中获得更新的值。
下面是我在 aspx 页面中的链接按钮: 单击链接按钮时调用的弹出窗口是一个 HTML 页面,它有两个框架,每个框架都包含在 aspx 页面上。
<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;
}
}
我还有一个弹出窗口,当用户单击链接按钮时会弹出该窗口。