我在会话中存储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");
}
}
答案 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");
我得到了解决方案。