0

在我的网格视图中,我希望当用户单击激活时,它会导航到 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>  

但我无法检索上一页的值。

请帮助我。

4

3 回答 3

0

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

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

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

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

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

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

您可以在MSDN上阅读所有这些内容

于 2013-10-29T09:21:32.383 回答
0
<asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" CommandArgument="linkbutton1" PostBackUrl='<%# "activate.aspx?RowIndex=" + Container.DataItemIndex %>' ></asp:LinkButton>

像这样放置命令参数。

于 2015-04-02T06:06:09.907 回答
0

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

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);
        }
    }
于 2013-10-28T06:24:56.677 回答