Gridview RowCommand在加载弹出窗口后执行

时间:2012-10-03 14:17:11

标签: c# asp.net

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

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

0 个答案:

没有答案