В настоящее время у меня есть одна веб-страница, asp. net и c#, которая получает данные с сервера SQL и отображает их в виде простой диаграммы. Количество возвращаемых строк варьируется.
Цель состоит в том, чтобы на веб-странице отображался небольшой набор данных в течение x секунд, а затем обновите sh страницу, чтобы отобразить обзор всех наборов данных. Данные извлекаются с помощью хранимой процедуры, и изменения должны происходить только на отображающей их веб-странице.
Что у меня есть
Чтобы заполнить диаграмму при загрузке страницы, Я использую следующее:
public void PopulateGraph(int? channelID)
{
DataSet dsPzData = new DataSet();
dsPzData = oDb.pickingdata(channelID);
chtPzMonitor.DataSource = dsPzData.Tables[0];
chtPzMonitor.Series[0].YValueMembers = dsPzData.Tables[0].Columns[2].ColumnName;
chtPzMonitor.Series[0].AxisLabel= dsPzData.Tables[0].Columns[0].ColumnName;
chtPzMonitor.DataBind();
}
И это отображается с:
<asp:Chart ID="chtPzMonitor" runat="server" Height="1013px" Width="1276px">
<series>
<asp:Series BackSecondaryColor="Red" ChartType="Bar"
Font="Microsoft Sans Serif, 35pt, style=Bold" IsValueShownAsLabel="false" CustomProperties="BarLabelStyle=Right"
Name="Series1">
</asp:Series>
</series>
<chartareas>
<asp:ChartArea Name="PZLabels">
<AxisY LabelAutoFitMaxFontSize="15" LabelAutoFitMinFontSize="8">
</AxisY>
<AxisX LabelAutoFitMaxFontSize="40" Interval="1">
</AxisX>
</asp:ChartArea>
</chartareas>
</asp:Chart>
Проблема
Данные на странице не изменение. Помимо тега <meta http-equiv="refresh" content="7"/>
исходного сайта данные на графике, похоже, не обновляются.
В одном из вариантов, которое я пробовал, используется таймер, который я временно добавил для отображения на ярлык, и он, похоже, тоже не обновляется - или обновляется, но способ, которым я пытаюсь перерисовать диаграмму, просто не обновляет sh.
То, что я пробовал
Я думал, что запуск таймера с событием триггера будет самым простым способом для достижения этой цели, поэтому я попробовал следующее:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Interval="5000" />
При наложении диаграммы в asp:UpdatePanel
и ContentTemplate
тегов. Метод Timer1_tick, который я подумал, будет достаточно простым:
Int32 timeCount = 0;
protected void Timer1_Tick(object sender, EventArgs e)
{
channelID = Convert.ToInt32(Request.QueryString["ID"].ToString());
if (channelID < 1000)
{
timeCount += 1;
if (timeCount > 3)
{
timeCount = 0;
PopulateGraph(1000);
}
else
PopulateGraph(channelID);
}
}
ID 1000 - это страница «обзора», которую я хочу показать, и счетчик, чтобы данные одного канала отображались в течение 15 секунд, а затем мы включаем обзор на пять секунд и возвращаемся обратно.
Я также пытался использовать серверный сценарий для тикового метода, но это, казалось, требовало еще более обширного переписывания, которого я стараюсь избегать .
Что мне здесь не хватает, или я выбрал подход, который слишком сложен для начала? Если есть более простой вариант для чередующихся перезагрузок страницы, это также может помочь.