我有一个搜索屏幕,我在GridView中使用GridView,我有<asp:LinkButton>
,在其命令参数中我使用该列的值,(Container.DataItemIndex+1)
查找项目的行号我点击了。在Gridview_RowCommand
中,我在会话变量中分配这些值,以便将它们传递给弹出窗口。
假设我的搜索屏幕填充了两行,点击第一行就可以正常工作,我可以在弹出窗口中访问会话变量;但是,当我点击第二行的链接按钮弹出窗口首先刷新然后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;
}
}
我还有一个弹出窗口,当用户点击链接按钮时会弹出该窗口。