访问另一页中选定的动态控件

本文关键字:动态控件 一页 访问 | 更新日期: 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")