在GridView上选择时传递值到另一个页面

时间:2011-03-22 15:51:13

标签: c# asp.net web-applications gridview webforms

我有一个显示一些数据的GridView:

  

Entity_ID(PK)
  名称
  描述

现在我在GridView中启用Select。我需要将Entity_ID传递给另一个页面,在此页面中,我将显示此Entity_ID的更多内容。

我应该如何选择Entity_ID值并将其作为查询字符串传递?我有这段代码:

ProductsDataGridView.SelectedRows(0).Cells(1).Value.ToString()

任何回复都将不胜感激!谢谢。

7 个答案:

答案 0 :(得分:6)

在网格中添加新项目模板列,然后添加选择链接,如下所示。

<asp:TemplateField HeaderText="View Details">
<ItemTemplate>
    <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/detailspagename.aspx?ID={0}", Eval("Entity_ID")) %>'>Select</asp:HyperLink>
</ItemTemplate>

答案 1 :(得分:2)

这就是我所做的:

 protected void gvAgentList_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = gvAgentList.SelectedRow;
        Response.Redirect("~/FrontEnd/Registration.aspx? EntityID=" + row.Cells[0].Text);
    }

答案 2 :(得分:1)

使用OnRowSelected事件。一旦调用,您就可以获得所选行,然后获取实体ID。接下来,您可以在查询字符串中构建一个包含实体ID的字符串,并在该页面中使用response.redirect。

答案 3 :(得分:0)

如何在页面之间传递数据有几种方法:

http://msdn.microsoft.com/en-us/library/6c3yckfw.aspx

如果你不介意网址将包含ID

,那么查询字符串就可以了

你也可以从上面的选项中考虑Page.PreviousPage,这在你的情况下似乎是合理的

答案 4 :(得分:0)

您也可以使用DataKeys 设置DataKeys='Entity_ID'

在后面的代码中,您可以访问与selectedrow.DataKeys[rowindex]["Entity_ID"]

相同的代码

此处选中的行是您选择的行,rowindex索引并获得相应的Entity_ID

答案 5 :(得分:0)

@GSGuy:

<asp:GridView runat ="server" ID = "gvAgentList" 
            AllowPaging = "True" 
            AutoGenerateSelectButton="True" AllowSorting="True" BackColor="#E8E8E8" 
            BorderColor="#003399" BorderStyle="Solid" BorderWidth="1px" Height="375px" 
            Width="823px"  AutoGenerateColumns="False" 
            DataKeyNames="ID" DataSourceID="SqlDataSource1" onselectedindexchanged="gvAgentList_SelectedIndexChanged">


        <AlternatingRowStyle ForeColor="#0066CC" />
        <Columns>

            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" 
                ReadOnly="True" SortExpression="ID" />
            <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
            <asp:BoundField DataField="Description" HeaderText="Description" 
                SortExpression="Description" />

<asp:TemplateField HeaderText="View Details">
<ItemTemplate>
    <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/detailspagename.aspx?ID={0}", Eval("Entity_ID")) %>'>Select</asp:HyperLink>
</ItemTemplate>

        </Columns>
        <HeaderStyle ForeColor="#3366FF" />

    </asp:GridView>

答案 6 :(得分:0)

 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
 {
    string fname, lname;
    fname = GridView1.Rows[e.NewEditIndex].Cells[0].Text;
    Session["fname"] = fname;
    lname = GridView1.Rows[e.NewEditIndex].Cells[1].Text;
    Session["lname"] = lname;
    Response.Redirect("gridpass.aspx");
 }

在gridpass.aspx.cs上

protected void Page_Load(object sender, EventArgs e)
{
   TextBox1.Text = Session["fname"].ToString();
   TextBox2.Text = Session["lname"].ToString();
}