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