在另一个页面中访问所选动态控件?

时间:2014-07-13 10:25:05

标签: c# asp.net

我有两个aspx页面," source.aspx"和" destination.aspx"。我在source.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>

现在,在destination.aspx中,我想访问在source.aspx上单击的linkbutton的文本。我该怎么做?

2 个答案:

答案 0 :(得分:0)

可能更容易解释为什么要这样做,因为可能有更好的方法。通常,除非您更改了表单的回发位置,否则链接按钮应该提交回自己的页面。这是更多信息有用的地方;你真的需要回发到另一个页面吗?

此外,动态生成的控件使用起来有点棘手。除非你每次加载页面时调用代码重新生成控件(即在初始加载和回发时),否则控件属性将不可用。

如果您要回到同一页面,并重新生成所有链接按钮,那么在click事件处理程序中,text属性可用作

((LinkButton)sender).Text

您将发件人对象转换为链接按钮,然后访问其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++;
}

在destination.aspx页面中,该值可用作Request.QueryString(“linktext”)。另请注意,您可以随意调用查询字符串变量(将“linktext”替换为您想要的任何内容)。而且,如果你能做一些像id一样短的东西而不是链接的文本,那会更好。如果可以的话。

答案 1 :(得分:0)

是: 在其他网页中读取的值是否包含?linktext =&#34; ...&#34;     的Request.QueryString [&#34; linktext的&#34;]