Я строю таблицу данных для котировок цен (например, таблицу котировок акций), которую необходимо обновлять каждые 5 секунд. Каждая строка содержит данные об одном складе в нескольких столбцах, а последний столбец в каждой строке имеет LinkButton
, чтобы увидеть больше информации об этом конкретном складе. Все работает, кроме 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
. Это работает нормально, если я уберу Таймер.
Вещи, которые я пробовал:
- Я пытался использовать кнопки вместо LinkButtons, но это не помогло.
- Я прочитал десятки постов, в которых говорилось о добавлении идентификатора в элементы управления LinkButton, но это тоже не помогло.