我有一个转发器列出了我的自定义数据,现在我想要做的是使用asp:linkbutton将变量从一个页面传递到另一个页面。我遇到的问题是,当我在子程序中调用我的链接按钮时,它不被识别。我看了Can't find a link button in a repeater,但我不认为它会在这种情况下起作用。这是我的代码:
<asp:Repeater ID="rptList" runat="server" EnableViewState="false" DataSourceID="SqlDataSource3">
<ItemTemplate>
<div>
<p>
<b>Title: </b> <asp:LinkButton ID="lbnCookieVar" OnClick="lbnCookieVar_Click" Text='<%# Eval("Job_Title")%>' runat="server" /> <br />
<b>Status: </b><%# Eval("Status")%><br />
<b>Department: </b><%# Eval("Department")%><br />
<b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
</p>
</div>
</ItemTemplate>
</asp:Repeater>
这是背后的代码
protected void lbnCookieVar_Click(object sender, EventArgs e)
{
Session["Data"] = lbnCookieVar.Text;
Response.Redirect("Application.aspx");
}
答案 0 :(得分:2)
您需要通过函数的“sender”参数访问linkbutton:
protected void lbnCookieVar_Click(object sender, EventArgs e)
{
Session["Data"] = (sender as LinkButton).Text;
Response.Redirect("Application.aspx");
}
答案 1 :(得分:1)
试试这个,应该有效:
Session["Data"] = (sender as LinkButton).Text;
请点击此处查看完整故事:Change text of a linkbutton in a repeater
答案 2 :(得分:1)
丑陋,你这样做比你需要的更困难。
为什么不使用Repeater的ItemCommand例程来接这个?然后你只需传递你想要做的CommandArgument。
<asp:Repeater ID="rptList" runat="server" EnableViewState="false"
DataSourceID="SqlDataSource3" OnItemCommand="rptList_ItemCommand">
<ItemTemplate>
<div>
<p>
<b>Title: </b> <asp:LinkButton ID="lbnCookieVar" CommandText="click" CommandArgument='<%# Eval("Job_Title")%>' Text='<%# Eval("Job_Title")%>' runat="server" /> <br />
<b>Status: </b><%# Eval("Status")%><br />
<b>Department: </b><%# Eval("Department")%><br />
<b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
</p>
</div>
</ItemTemplate>
</asp:Repeater>
代码背后:
我不知道是谁改变了我的代码,但你错了。如果你完全按照这样做,这就是你的方式。当它应该是双引号时,我错误地将单引号放在“click”周围。
protected void rptList_ItemCommand(object sender, CommandEventArgs e)
{
if (e.CommandName == "click")
{
Session["Data"] = e.CommandArgument.ToString();
Response.Redirect("Application.aspx");
}
}
答案 3 :(得分:0)
使用转发器/列表视图中的控件通常会有点奇怪。我认为在您的情况下,您可以执行以下操作:
Session["Data"] = ((LinkButton)sender).Text;
答案 4 :(得分:0)
SessionStorage.LinkButtonText = Session["Data"] = ((LinkButton)sender).Text;
public class SessionStorage
{
public Static String LinkButtonText
{
get
{
if (System.Web.HttpContext.Current.Session["LinkButtonText"] == null)
return String.Empty;
return Convert.ToString(
System.Web.HttpContext.Current.Session["LinkButtonText"]);
}
set
{
System.Web.HttpContext.Current.Session["LinkButtonText"] = value;
}
}
}
答案 5 :(得分:0)
嗨,这就是我修复它的方法!
<asp:Repeater ID="rptList" runat="server" EnableViewState="false" DataSourceID="SqlDataSource3">
<ItemTemplate>
<div>
<p>
<b>Title: </b> <a href="CareerSummary.aspx?Job_Title=<%# Eval("Job_Title") %>&num=<%# Eval("num") %>"><%# Eval("Job_Title") %></a><br />
<b>Status: </b><%# Eval("Status")%><br />
<b>Department: </b><%# Eval("Department")%><br />
<b>Date Position Available: </b><%# Eval("Date_Position_Available")%><br />
</p>
</div>
</ItemTemplate>
</asp:Repeater>
您希望获得发送变量的页面后面的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
lblRow.Text = Request.QueryString["num"];
}
}
此方法必须处于负载状态