C# 在gridview中选择一行,然后将所选行传递给另一页
我正在用C和SQL Server在ASP.NET中编写一个web应用程序 基本上,我希望能够在GridView中选择一个特定的行,并将主键从该行传递到另一个包含一系列文本框和标签的页面,我希望使用所选行的数据填充这些页面 我这样做的主要原因是因为我的表中有很多字段,我需要在GridView中展开字段进行编辑等 我对ASP.NET中的select语句进行了一些研究,但我不知道如何将该信息传递到另一个页面。一种方法: 首先,在gridview中,在datakeys中添加主键C# 在gridview中选择一行,然后将所选行传递给另一页,c#,asp.net,sql-server,row,aspxgridview,C#,Asp.net,Sql Server,Row,Aspxgridview,我正在用C和SQL Server在ASP.NET中编写一个web应用程序 基本上,我希望能够在GridView中选择一个特定的行,并将主键从该行传递到另一个包含一系列文本框和标签的页面,我希望使用所选行的数据填充这些页面 我这样做的主要原因是因为我的表中有很多字段,我需要在GridView中展开字段进行编辑等 我对ASP.NET中的select语句进行了一些研究,但我不知道如何将该信息传递到另一个页面。一种方法: 首先,在gridview中,在datakeys中添加主键 DataKeyNames
DataKeyNames="Id"
并为选择添加一个事件
OnSelectedIndexChanging="OnRowSelected"
然后在代码隐藏中:
protected void OnRowSelected(object sender, GridViewSelectEventArgs e)
{
// Get the datakey of the selected row
var id = Convert.ToInt32(grdCompany.DataKeys[e.NewSelectedIndex].Value);
// Redirect to second page
Response.Redirect("SecondPage.aspx?Id=" + id);
}
然后在SecondPage.aspx中,您可以通过以下方式从所选行获取id:
var id = Request.QueryString["Id"];
一种方法是:
首先,在gridview中,在datakeys中添加主键
DataKeyNames="Id"
并为选择添加一个事件
OnSelectedIndexChanging="OnRowSelected"
然后在代码隐藏中:
protected void OnRowSelected(object sender, GridViewSelectEventArgs e)
{
// Get the datakey of the selected row
var id = Convert.ToInt32(grdCompany.DataKeys[e.NewSelectedIndex].Value);
// Redirect to second page
Response.Redirect("SecondPage.aspx?Id=" + id);
}
然后在SecondPage.aspx中,您可以通过以下方式从所选行获取id:
var id = Request.QueryString["Id"];
我会使用会话。我想你有一些变量
var currentGridViewRow = GridView.SelectedRow;
您可以在会话中插入有关此行的信息:
Session["currentGridViewRow"] = currentGridViewRow;
之后,在后面的第二个代码中,您将从会话中获得信息
var currentGridViewRow = Session["currentGridViewRow"];
请记住,这是一种非常简单和通用的方法。编写一些类来管理会话是一个很好的实践
有用链接:我会使用会话。我想你有一些变量
var currentGridViewRow = GridView.SelectedRow;
您可以在会话中插入有关此行的信息:
Session["currentGridViewRow"] = currentGridViewRow;
之后,在后面的第二个代码中,您将从会话中获得信息
var currentGridViewRow = Session["currentGridViewRow"];
请记住,这是一种非常简单和通用的方法。编写一些类来管理会话是一个很好的实践
有用链接:如果您不使用DataKeyName,这里有另一种方法
int RowIndex;
protected void gvName_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = gvName.SelectedRow;
string name = gvName.Rows[RowIndex].Cells[1].Text; //Gets column
//With DataKey
string name = gvName.DataKeys[RowIndex]["TicketId"].ToString();
Response.Redirect("~/secondpage.aspx?ServiceCenter=" + name);
}
protected void gvName_RowCommand(object sender, GridViewCommandEventArgs e)
{
//Gets Gridview row number when clicked
RowIndex = Convert.ToInt32(e.CommandArgument);
}
如果不使用DataKeyName,还有另一种方法
int RowIndex;
protected void gvName_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = gvName.SelectedRow;
string name = gvName.Rows[RowIndex].Cells[1].Text; //Gets column
//With DataKey
string name = gvName.DataKeys[RowIndex]["TicketId"].ToString();
Response.Redirect("~/secondpage.aspx?ServiceCenter=" + name);
}
protected void gvName_RowCommand(object sender, GridViewCommandEventArgs e)
{
//Gets Gridview row number when clicked
RowIndex = Convert.ToInt32(e.CommandArgument);
}
另一种很好的方式,非常感谢您的解决方案另一种很好的方式,非常感谢您的解决方案感谢快速回复人员,感谢它感谢快速回复人员,感谢itHello Ben,有可能带着从第二页选择的记录来到第一页吗?Hello@Vinay,是的,这是可能的。只需将正确的键传递到查询字符串。你好,本,是否可以使用第二页中选定的记录进入第一页?你好@Vinay,是的,这是可能的。这只是将正确的键传递给查询字符串的问题。