在我的网格视图中,我希望当用户点击激活时,它会导航到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>
但我无法检索以前的页面值。
请帮助我。
答案 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>
如果要使用上一页,则将gridview绑定到数据源时;将数据源的值存储在公共属性中,然后通过PreviousPage属性访问该属性。
另一种方法是使用Session
变量。
您可以在MSDN
上阅读所有这些内容答案 2 :(得分:0)
<asp:LinkButton ID="linkbutton1" runat="server" Text="Activate" CommandArgument="linkbutton1" PostBackUrl='<%# "activate.aspx?RowIndex=" + Container.DataItemIndex %>' ></asp:LinkButton>
像这样放置命令参数。