我有两个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的文本。我该怎么做?
答案 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;]