在asp.net 2.0里,多了crosspage的功能,也就是说,可以很方便地在第二个页面里接受第一个页面里
的参数值了, 详细参考http://www.cnblogs.com/jackyrong/archive/2005/01/15/92472.html里说的。这里,举个
常见的例子,比如在一个gridview里,当点选第一列某个人的姓名后,接着并跳转到第二页,在这页里显示关于这个人的具体信息,这可以很方便地用cross page的功能实现。
A页面有个gridview:
<asp:GridView ID="g" runat="server"
AllowSorting="True" AutoGenerateColumns="False" AllowPaging="True"
PageSize="50" OnRowCommand="g_OnRowCommand">
<Columns>
<asp:ButtonField HeaderText="Username"
CommandName="Select" DataTextField="Username"
ButtonType="Link" </asp>
.....................
然后在g_onrowcommand事件中写入如下代码
protected void g_OnRowCommand(object sender,
GridViewCommandEventArgs e)
{
if (e.CommandName == "Select")
{
int index = Convert.ToInt32(e.CommandArgument);
GridViewRow selectedRow = (GridViewRow)g.Rows[index];
LinkButton clickedLinkedButton =
((LinkButton)selectedRow.Cells[0].Controls[0]);
SelectedUserName = clickedLinkedButton.Text;
Server.Transfer("../../pages/search/usersummary.aspx", true);
}
}
在这里,首先得到用户选的是哪一行的记录(得出index),然后在得到gridview里第一列的连接的内容,最后用 SelectedUserName 存放用户点选的是哪一条记录中的username.,
其中,SelectedUserName是属性来的,定义如下
private String _selectedUserName;
public String SelectedUserName
{
get
{
return _selectedUserName;
}
set
{
_seletedUserName=value;
}
}
然后在第二个接收页面b.aspx里,这样设计
<%@ PreviousPageType
VirtualPath="~/a..aspx"%>
protected void Page_Load(object sender, EventArgs e)
{
if (this.PreviousPage != null)
{
Response.write( this.PreviousPage.SelectedUserName);
}
}