2016-03-07 51 views
-3

我想查看一个asp.net页面上的SQL Server数据。 SQL Server中的值将动态更改。我需要在我的aspx页面上更新这些值。我创建了一个计时器线程来从SQL Server(实时监控系统)获取数据,但它不起作用并在文本框中显示空值。帮我解决这个问题以固定的时间间隔从SQL Server更新文本框的值

protected void Page_Load(object sender, EventArgs e) 
{ 
    System.Timers.Timer myTimer = new System.Timers.Timer(); 
    myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent); 
    myTimer.Enabled = true; 
    myTimer.AutoReset = true; 
    myTimer.Interval = 1000; 
    myTimer.Start(); 
} 

public void DisplayTimeEvent(object source, ElapsedEventArgs e) 
{ 
    SqlConnection sc = new SqlConnection("Data Source=SCADASTATION\\WINCC;Initial Catalog=LIVEDATA;Persist Security Info=True;User ID=sa;Password=root"); 

    SqlCommand com = new SqlCommand(); 
    com.Connection = sc; 

    sc.Open(); 

    SqlDataReader read = (null); 
    com.CommandText = ("SELECT TOP 1 * FROM DATATABLE1 ORDER BY 1 DESC "); 
    read = com.ExecuteReader(); 

    while (read.Read()) 
    { 
     TAG1.Text = read[1].ToString(); 
     TAG2.Text = read[2].ToString(); 
     TAG3.Text = read[3].ToString(); 
     TAG4.Text = read[4].ToString(); 
     TAG5.Text = read[5].ToString(); 
     TAG6.Text = read[6].ToString(); 
     TAG7.Text = read[7].ToString(); 
     TAG8.Text = read[8].ToString(); 
     TAG9.Text = read[9].ToString(); 
     TAG10.Text = read[10].ToString(); 
     TAG11.Text = read[11].ToString(); 
     TAG12.Text = read[12].ToString(); 
    } 

    sc.Close(); 
} 
+6

“但它没有按预期工作”。那么你期待什么和实际发生了什么?不要让我们猜测。 – ChrisF

+0

我没有使用线程,但如果我会这样做,我将使用数据时间操作来触发获取更新的值。 –

回答

1

你可以很容易地让你的页面在每个特定的时间间隔后刷新自己。为此,我们使用元标记。

<meta http-equiv="refresh" content="60"> 

这个元标记将被纳入内<head>标签
这里http-equiv="refresh"告诉页面需要重新加载。
content=60表示页面重新加载之后的时间延迟。

您可以将时间更改为所需的时间延迟。

+0

我已经使用这个,但它不是最优化的解决方案。 – RJ10

+0

@ RJ10这与用计时器建议的解决方案有何不同?如果没有优化,也许你应该描述一个优化的解决方案是什么样子? – DGibbs

+0

@DGibbs这个解决方案将刷新整个页面,我只想刷新文本框的值,我有其他的东西在同一页面,现在刷新.., – RJ10

相关问题