1

我正在使用 C# 和 SQL Server 在 ASP.NET 中编写一个 Web 应用程序。

基本上我希望能够选择 a 中的特定行GridView并将主键从该行传递到另一个页面,其中包含一系列文本框和标签,我希望这些用来自所选行的数据填充。

我这样做的主要原因是因为我的表中有很多字段,我需要扩展字段以GridView进行编辑等。

我对 ASP.NET 中的 select 语句进行了一些研究,但我不知道如何将该信息传递到另一个页面。

4

3 回答 3

7

一种方法:

首先,在你的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"];
于 2013-06-19T11:31:52.440 回答
2

如果您不使用 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);
}
于 2014-05-01T20:57:47.197 回答
1

我会使用会话。所以我想你有一些变量

var currentGridViewRow = GridView.SelectedRow;

您可以在会话中插入有关此行的信息:

Session["currentGridViewRow"] = currentGridViewRow;

之后,在您后面的第二个代码中,您可以从会话中获取信息。

var currentGridViewRow = Session["currentGridViewRow"];

请记住,这是非常简单和通用的方法。编写一些管理会话的类是一个好习惯。

有用的链接:http: //msdn.microsoft.com/en-us/library/ms178581%28v=vs.100%29.aspx

于 2013-06-19T11:32:01.920 回答