我正在使用 C# 和 SQL Server 在 ASP.NET 中编写一个 Web 应用程序。
基本上我希望能够选择 a 中的特定行GridView
并将主键从该行传递到另一个页面,其中包含一系列文本框和标签,我希望这些用来自所选行的数据填充。
我这样做的主要原因是因为我的表中有很多字段,我需要扩展字段以GridView
进行编辑等。
我对 ASP.NET 中的 select 语句进行了一些研究,但我不知道如何将该信息传递到另一个页面。
我正在使用 C# 和 SQL Server 在 ASP.NET 中编写一个 Web 应用程序。
基本上我希望能够选择 a 中的特定行GridView
并将主键从该行传递到另一个页面,其中包含一系列文本框和标签,我希望这些用来自所选行的数据填充。
我这样做的主要原因是因为我的表中有很多字段,我需要扩展字段以GridView
进行编辑等。
我对 ASP.NET 中的 select 语句进行了一些研究,但我不知道如何将该信息传递到另一个页面。
一种方法:
首先,在你的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"];
如果您不使用 DataKeyNames,这是另一种方法。
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);
}
我会使用会话。所以我想你有一些变量
var currentGridViewRow = GridView.SelectedRow;
您可以在会话中插入有关此行的信息:
Session["currentGridViewRow"] = currentGridViewRow;
之后,在您后面的第二个代码中,您可以从会话中获取信息。
var currentGridViewRow = Session["currentGridViewRow"];
请记住,这是非常简单和通用的方法。编写一些管理会话的类是一个好习惯。
有用的链接:http: //msdn.microsoft.com/en-us/library/ms178581%28v=vs.100%29.aspx