Asp.net会议没有显示

时间:2015-09-13 22:39:58

标签: asp.net session webforms

我在会话中存储gridview行的主键值,并在另一个网页上显示我正在尝试下面的代码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Migrate")
    {
        int _rowindex = Convert.ToInt32(e.CommandArgument);
        GridViewRow _selectedrow = GridView1.Rows[_rowindex];
        TableCell _firstcell = _selectedrow.Cells[0];
        Session["authId"] = _firstcell.Text + "";

        Response.Redirect("WebForm2.aspx");
    }
}

通常代码工作正常,但在将页面重定向到webform2后运行其他条件后,_firstcell值不存储在会话中。我正在使用下面的代码onopeload of webform2:

protected void Page_Load(object sender, EventArgs e)
{
    if (!string.IsNullOrEmpty(Session["authId"].ToString()))
        Response.Write(Session["authId"].ToString());
    else
    { 
        Response.Write("Empty Session");
    }
}

1 个答案:

答案 0 :(得分:0)

通过更改以下代码:

int _rowindex = Convert.ToInt32(e.CommandArgument);
GridViewRow _selectedrow = GridView1.Rows[_rowindex];
TableCell _firstcell = _selectedrow.Cells[0];
Session["authId"] = _firstcell.Text + "";
Response.Redirect("WebForm2.aspx");

进入下面的代码:

int _rowindex = Convert.ToInt32(e.CommandArgument);
//we used datakey here for get primary key of specific row
var id = Convert.ToInt32(GridView1.DataKeys[_rowindex].Value);
Session["authId"] = id;
Response.Redirect("WebForm2.aspx");

我得到了解决方案。