我已经尝试使用跨页面回发从第1页到第2页的控件访问值,如下所示:
我的page1(Default.aspx)有一个LinkButton,我在首次加载页面时存储了一些信息:
<asp:LinkButton ID="btnNoticia"
runat="server" Text="Leia ++"
CommandName="NoticiaID"
CommandArgument='<%# Eval("NoticiaID")%>'
EnableViewState="True"
PostBackUrl="Noticias.aspx"
/>
在我的page2(Noticias.aspx)中,我正在恢复“btnNoticia”中的值:
LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.FindControl("btnNoticia");
但它无法找到上一页发布的控件。我为“btnLeiaMaisDefault”获得了一个空值。
有些想法?
PS:第1页的LinkButton ID =“btnNoticia”位于UpdatePanel内。
谢谢
Josi
答案 0 :(得分:1)
你不能简单地使用FindControl。因为您的控件可能处于另一个控件之下,所以您需要一个递归函数来迭代所有控件及其后代以获取指定的控件。
您可以将linkbutton控件放在面板控件下,并以这种方式访问它:
LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.Panel1.FindControl("btnNoticia");
或其他方式使用递归函数:
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}
return null;
}
答案 1 :(得分:1)
像
一样导航您的网址PostBackUrl =“〜/ Default.aspx”
代码为
protected void Page_Load(object sender,System.EventArgs e)
{
TextBox pvProductID = (TextBox)PreviousPage.FindControl("TextBox1");
TextBox pvProductName = (TextBox)PreviousPage.FindControl("TextBox2");
Label1.Text ="You came from: "+ PreviousPage.Title.ToString();
Label2.Text = "Product ID: " + pvProductID.Text.ToString();
Label2.Text += "<br />Product Name: " + pvProductName.Text.ToString();
string imageSource = "~/Images/" + pvProductID.Text + ".jpg";
Image1.ImageUrl = imageSource;
Image1.BorderWidth = 2;
Image1.BorderColor = System.Drawing.Color.DodgerBlue;
}
我试过......它有效......
答案 2 :(得分:-1)
试试这个代码......它正在我这边工作.......
if (Page.PreviousPage!=null)
{
LinkButton btnLeiaMaisDefault = (LinkButton)Page.PreviousPage.FindControl("btnNoticia");
}
希望它有所帮助。