定时 *** 作,有些麻烦。因为必须有人访问你的程序你的程序才会被执行。
也可以通过
Global.ASAX
来定义一个计时器。
不过,你可以用一个
CACHE
或数据库或
XML
来
记录更新时间。
比如每次运行的时候,检查上次更新的时间,如果超过一定的时间,就调用更新程序更新数据。
这个你只能被动地去接收数据库里面的数据变化,而不能通过数据库的数据变化去影响vs里面的数据。
你可以开一个线程,然后这个线程是while(true)死循环...每个1秒往数据库读一次数据...
Thread thread = new Thread(runDo)thread.Start()
private void runDo()
{
while (true)
{
//do something......
Thread.Sleep(1000)//睡眠1秒
}
}
或者用Timer控件(实际这个也是线程,就是上面那个方法...)
额,或许我理解错你的意思?
你说的数据库数据每秒都在变,是谁促使它变得?是别的应用程序?还是你自己的程序每秒都在更新数据库?
这是因为回传造成的首先把流程搞清楚:加载
1、加载数据到文本框
2、修改数据
3、点“提交”这次回传,导致后台页面再次加载原始数据到文本框
注意:此次后台程序又将文本框的值,设置成数据库里面的那个原来的值
4、插入数据库。。。结果插入的时候textbox的值已经变了,变成还是数据库里面的那个。。。
上述,可以设置断点调试,一下就看出来了。
调试会么?点左边设置断电,然后F5启动调试,到断点后按F11单步调试,看看各个变量的值
解决方法应该这样
1、在你加载原始数据到文本框的方法里面加上
if(!IsPostBack)
{
//此处加载文本框原始数据,并且只有再第一次加载页面的时候才改变textbox的值
}
意思是只有再页面首次加载的时候才加载文本框的值,如果是回传,则不加载
2、更新的方法里面加上
if(IsPostBack)
{
//此处写更新方法
}
意思是,当是页面回传的时候,更新文本框的值,其实这个加不加无所谓。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)