首先,我是一个新的 C# 开发人员,我需要一些帮助,我的 aspx 文件中有一个带有 SqlDataSource 的网格视图,其中包含 3 列 ID/Name/Job 和几条记录(行)。当用户选择一行时,我想重定向到另一个页面并将该行的选定 ID 的值作为参数传递。用户每次只能选择一行。我花了几个小时在上面,但是发生了一些奇怪的事情。
我有一个方法
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string selectedID;
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridViewRow gvr = e.Row;
selectedID = (GridView1.DataKeys[e.Row.RowIndex].Value.ToString());
gvr.Attributes.Add("OnClick","javascript:location.href='Views/EditMenus/EditCompany.aspx?id=" + selectedID + "'");
gvr.Attributes.Add("onmouseover", "this.style.backgroundColor='#FFE6E6'");
gvr.Attributes.Add("onmouseout", "this.style.backgroundColor=''");
gvr.Attributes.Add("style", "cursor:pointer;");
Session["IDs"] = selectedID;
} }
在我的重定向页面中,我在页面加载方法中有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["IDs"] != null)
{
Label2.Text = "Selected ID is: "+ Session["IDs"].ToString();
}
}
现在,当我选择一行时,重定向到其他页面正常工作,并且浏览器 url 根据上面的 javascript 代码具有所选 ID 的正确值,但是 Label2.Text 打印错误的 ID。它打印每页最后一行的值 ID,而不是所选 ID 的值。为什么会这样?
这对我来说有点奇怪,因为我对这两种情况都使用了相同的变量“selectedID”,正如你在上面看到的那样。