0

我有一个搜索屏幕,我在其中使用 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;
    }
}

我还有一个弹出窗口,当用户单击链接按钮时会弹出该窗口。

4

0 回答 0