如何获取上一页gridview值

时间:2013-10-28 05:38:28

标签: asp.net gridview

在我的网格视图中,我希望当用户点击激活时,它会导航到activate.aspx页面。我想从上一页检索三个值到activate.aspx页面。 我的代码是:

    if (this.Page.PreviousPage != null)
    {
        int rowIndex = int.Parse(Request.QueryString["RowIndex"]);
        GridView GridView1 = (GridView)this.Page.PreviousPage.FindControl("GridView1");
        GridViewRow row = GridView1.Rows[rowIndex];
        Label1.Text = row.Cells[3].Text;
        Label2.Text = row.Cells[2].Text;
        Label3.Text = row.Cells[2].Text;
        SqlDataAdapter da = new SqlDataAdapter("insert into login values('" + Label1.Text + "','" + Label2.Text + "','" + Label3.Text + "')",con);
        DataSet ds = new DataSet();
        da.Fill(ds);
      }

标记:

   <asp:TemplateField HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Larger" HeaderText="Activate/Delete" ItemStyle-Width="150px">
                <ItemTemplate>                    
                    <asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" PostBackUrl='<%# "activate.aspx?RowIndex=" + Container.DataItemIndex %>' ></asp:LinkButton>              
                    <span onclick="return confirm('Are You sure want to Delete?')">
                    <asp:LinkButton ID="linkbutton2" runat="server" Text="Delete" CommandName="Delete"></asp:LinkButton>
                    </span>
                </ItemTemplate>    
            </asp:TemplateField>  

但我无法检索以前的页面值。

请帮助我。

3 个答案:

答案 0 :(得分:0)

您正在通过 PostBackUrl 将当前页面导航到 activate.aspx 。 它基本上用作 Response.Redirect(“”); ,并且在此页面中释放了内存。 您应该尝试使用GridView的RowCommand从当前页面的后端代码中导航 Server.Transfer(“activate.aspx”,true);

Aspx页面标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
            onrowcommand="GridView1_RowCommand">
            <Columns>
                <asp:TemplateField HeaderStyle-Font-Bold="true" HeaderStyle-Font-Size="Larger" HeaderText="Activate/Delete"
                    ItemStyle-Width="150px">
                    <ItemTemplate>
                        <asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" CommandName="Redirect"
                            CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'></asp:LinkButton>
                        <span onclick="return confirm('Are You sure want to Delete?')">
                            <asp:LinkButton ID="linkbutton2" runat="server" Text="Delete" CommandName="Delete"></asp:LinkButton>
                        </span>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

.cs页码:

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Redirect")
        {
            String yourId="What ever id you want pass";
            Server.Transfer("activate.aspx?RowIndex=" + yourId, true);
        }
    }

答案 1 :(得分:0)

有很多方法可以将数据从1页传递到另一页。

如果要使用查询字符串,可以将变量添加到现有列:

<ItemTemplate> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/activate.aspx?RowIndex=" + Container.DataItemIndex + "&v1=" + Eval("<prop>") + "&v2=" + Eval("<prop2>") %>'>Activate</asp:HyperLink> </ItemTemplate>

  • 替换v1&amp; v2使用您需要的名称查询字符串变量。
  • 替换&amp;使用用于绑定gridview中所需列的数据的属性。
  • 由于您不需要回发网址,因此您可以使用上面显示的超链接。

如果要使用上一页,则将gridview绑定到数据源时;将数据源的值存储在公共属性中,然后通过PreviousPage属性访问该属性。

另一种方法是使用Session变量。

您可以在MSDN

上阅读所有这些内容

答案 2 :(得分:0)

<asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" CommandArgument="linkbutton1" PostBackUrl='<%# "activate.aspx?RowIndex=" + Container.DataItemIndex %>' ></asp:LinkButton>

像这样放置命令参数。