我正在构建一个价格报价数据表(认为股票报价表)需要每5秒刷新一次。每行大约有一个股票的一些数据在几列和每一行的最后一列有LinkButton
看到关于特定股票的更多信息。一切正常,但LinkButton
。整个表嵌套在UpdatePanel
我认为这是导致该问题的内部。我在这个主题上看到了相当多的帖子,但没有一篇适合我。LinkButton在UpdatePanel中不起作用
这里是我的.aspx代码:
<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:Timer ID="Timer" OnTick="Timer_Tick" runat="server" Interval="5000" />
<div id="itemList">
<asp:UpdatePanel ID="itemPanel" UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="Timer" /></Triggers>
<ContentTemplate>
<asp:Panel ID="Panel_ItemList" runat="server" width="100%"></asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
和我.aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
...
if (!Page.IsPostBack)
{
updateItemsTable();
}
}
protected void LinkButton_Click(object sender, CommandEventArgs e)
{
Panel_LoginAlert.Visible = true; // <-- THIS IS NOT FIRING!!
}
protected void Timer_Tick(object sender, EventArgs e)
{
updateItemsTable();
}
protected void updateItemsTable()
{
//... Query my DB
if (rdr.HasRows)
{
Panel_ItemList.Controls.Add(new LiteralControl("<!-- ItemList Panel -->\n"));
while (rdr.Read())
{
LinkButton lb = new LinkButton();
lb.Text = "Item";
lb.ID = "lbItem_" + strDBitemID;
lb.CommandName = strDBitemName;
lb.CommandArgument = strDBitemID;
lb.Command += new CommandEventHandler(LinkButton_Click);
Panel_ItemList.Controls.Add(lb);
}
Panel_ItemList.Controls.Add(new LiteralControl("<!-- END ItemList Panel -->\n"));
}
//...
conn.Close();
}
所以页面加载罚款和计时器重新加载表罚款,但LinkButtons
做不开火CommandEventHandler
。这工作正常,如果我删除计时器。
事情我已经尝试:
- 我尝试使用按钮,而不是了LinkButton但这并没有帮助。
- 我读了几十个帖子说要给LinkButton控件添加一个ID,但这也没有帮助。
如果你试图掩盖使用链接按钮面板,你可能只是这样做在JavaScript。 –