访问另一页中选定的动态控件
本文关键字:动态控件 一页 访问 | 更新日期: 2023-09-27 18:12:36
我有两个aspx页面,"来源。"destination.aspx"answers"destination.aspx"。我在源代码中放置了一个占位符控件。然后用链接按钮以编程方式填充它(这是source.aspx.cs文件):
LinkButton[] link = new LinkButton[n]; //where n is the no. of records in my databse
OleDbCommand cmd = new OleDbCommand("select column from table", con);
OleDbDataReader rd = cmd.ExecuteReader(); //reading column from the database
int i = 0;
while (rd.Read())
{
link[i] = new LinkButton();
link[i].ID = "link" + i;
link[i].Text = rd[0].ToString();//value read from the database becomes the text for linkbutton
PlaceHolder1.Controls.Add(link[i]);//adding the link to the placeholder
i++;
}
本页的源代码(source.aspx)是:
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<p>
<br />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</p>
</asp:Content>
现在,在目的地。我想访问在source.aspx上单击的链接按钮的文本。我该怎么做呢?
可能更容易解释为什么要这样做,因为可能有更好的方法。一般来说,链接按钮应该提交回它自己的页面,除非您更改了表单的回发位置。这就是更多信息有用的地方;您真的需要回发到另一个页面吗?
此外,动态生成的控件处理起来有点棘手。除非你在每次页面加载(即初始加载和回发)时调用代码来重新生成控件,否则控件属性将不可用。
如果您要提交回同一个页面,并重新生成所有的链接按钮,那么在click事件处理程序中,text属性作为
可用((LinkButton)sender).Text
将sender对象强制转换为链接按钮,然后访问其Text属性。
根据您的评论编辑:
好的,所以最简单的方法是使用超链接而不是链接按钮,并在查询字符串中传递超链接文本。
将链接放在数组中似乎也没有得到任何好处,因此您可以忽略该变量,并在循环中执行此操作:
while (rd.Read())
{
HyperLink link = new HyperLink();
link.ID = "link" + i;
link.Text = rd[0].ToString();//value read from the database becomes the text for linkbutton
link.NavigateUrl = "Destination.aspx?linktext=" + rd[0].ToString();
PlaceHolder1.Controls.Add(link);//adding the link to the placeholder
i++;
}
在目的地。在aspx页面中,该值可以通过Request.QueryString("linktext")获得。还要注意,您可以随意调用查询字符串变量(将"linktext"替换为您想要的任何内容)。而且,如果可以的话,最好使用一些简短的内容,比如id,而不是链接的文本。
using: 读取其他页面的值,它的url包含?" 请求。查询字符串("linktext")