• 实现即时更新数据 反映在DataView或则DataGrid 在winform ·····



    用线程写了一个:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml;
    using System.Threading;
    using System.Data.SqlClient;

    namespace TestForm
    {
        public partial class Form1 : Form
        {
            //定义一个变量,用于关闭线程
            private bool flag;
            //定义一个线程
            private Thread thread;

            //定义一个委托
            public delegate void MyInvoke(DataSet ds);

            public Form1()
            {
                InitializeComponent();
                flag = true;
                thread = new Thread(new ThreadStart(threadProc));
                thread.Start();
            }

            //线程回调函数
            private void threadProc()
            {
                while (flag)
                {
                    //三秒种一次
                    DataBind();          
                    Thread.Sleep(3000);
                }
            }
            //操作DataGridView
            private void BindDataGridView(DataSet ds)
            {
                this.dataGridView1.DataSource = ds.Tables["student"];
            }
            //从数据库中取出数据,并绑定
            private void DataBind()
            {
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                try
                {
                    con.Open();
                    SqlDataAdapter sda = new SqlDataAdapter("select * from studentInfor", con);
                    DataSet ds = new DataSet();
                    sda.Fill(ds, "student");
                    //this.dataGridView1.DataSource = ds.Tables["student"];
                    //绑定数据到DataGridView
                    MyInvoke mi = new MyInvoke(BindDataGridView);
                    this.BeginInvoke(mi, new object[] { ds });
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }

            private void button1_Click(object sender, EventArgs e)
            {
                //测试,添加一条数据,看隔一段时间后,能否取上来..
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                try
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("insert into studentInforvalues('1111111','test')", con);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }

            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                //关闭前先关闭线程
                flag = false;
                thread.Join();
            }


        }
    }


    //======================================
    再用Timer写一个:


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Threading ;


    namespace Test
    {
        public partial class Form1 : Form
        {

            public Form1()
            {
                InitializeComponent();
                //设置间隔,启动Timer
                this.timer1.Interval = 3000;
                this.timer1.Enabled = true;
               
            }

            //从数据库中取出数据,并绑定
            private void DataBind()
            {
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                try
                {
                    con.Open();
                    SqlDataAdapter sda = new SqlDataAdapter("select * from studentInfor", con);
                    DataSet ds = new DataSet();
                    sda.Fill(ds, "student");
                    this.dataGridView1.DataSource = ds.Tables["student"];
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }

           
            private void button1_Click(object sender, EventArgs e)
            {
                //测试,添加一条数据,看隔一段时间后,能否取上来..
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                try
                {
                    con.Open();
                    SqlCommand cmd = new SqlCommand("insert into studentInfor values('1111111','test')", con);
                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    con.Close();
                }
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                //每隔三秒,响应一次
                DataBind();
            }
        }
    }

     

  • 相关阅读:
    javascript:history.go()和History.back()的区别
    Web 开发] 定制IE下载对话框的按钮(打开/保存)(转)
    JavaScript 浮动定位提示效果(转)
    关于网页*静态化*及SEO问题的一些补充(转)
    httpanalyzer 结合 HttpWebRequest Post的运用
    SEO工具大全(转)
    导出excel
    Asp.NET导出Excel文件乱码解决若干方法 (转)
    关于DataBinder.Eval Eval Bind
    电脑疑似中毒
  • 原文地址:https://www.cnblogs.com/Fooo/p/708473.html
Copyright © 2020-2023  润新知