通过Web服务将数据插入数据库时​​自动更新文本框文本

时间:2013-04-16 09:20:30

标签: c# winforms web-services textbox

我有一个web服务,它通过webmethod和另一个显示数据库数据的webmethod将数据插入到SQL Server数据库中。我已经创建了一个Windows窗体应用程序,它显示了来自Web服务的编码的数据:

private void Form1_Load(object sender, EventArgs e)
    {
        Web_Reference.Service1 service = new Web_Reference.Service1();
        dataGridView1.DataSource = service.connectoToSql();
    }

我还没有为文本框编码但是我希望当客户端使用HTTP POST将数据插入数据库时​​,文本框文本必须自动填充更新的数据,用户不应单击不时刷新按钮。

这个问题有什么解决方案吗? 任何人都可以为此提出任何想法吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

您的问题有几个机会。

  1. 使用计时器在新的时间间隔内“检查”所有时间间隔 记录被插入表格中。

    如果是 - >更新前表(dataGridView1.DataSource = service.connectoToSql();)

  2. 使用Web服务的“推送通知”系统(已经

  3. 网络套接字......等

  4. 这是一个粗略的例子,方法“Timer”我会说最简单...但是,下面的例子适用于使用C#编写的microsoft sql server和应用程序。你的小信息不可能做得更好..:

    public static int Main() 
    {
           /* Adds the event and the event handler for the method that will 
              process the timer event to the timer. */
           myTimer.Tick += new EventHandler(TimerEventProcessor);
    
           // Sets the timer interval to 5 seconds.
           myTimer.Interval = 5000;
           myTimer.Start();
    
    }
    //Function called every half second
    private void TimerEventProcessor(object sender, EventArgs e) 
    { 
        //Update the dataBase every half second
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlCommand cmd = new SqlCommand(command, connection);
            MytextBox.Text = sqlCommand.ExecuteScalar();
            connection.Close();
            connection.Close();
        }
    } 
    

    我添加了一张图片以获得最佳解释: enter image description here

答案 1 :(得分:0)

这对我有所帮助,虽然效果最好但非常简单:我添加了一个Timer并在页面加载时启动它。我删除了datagridview并使用了DataTable,并在定时器点击事件中加载了来自Web服务响应的所有数据,并按所需数据填充每个文本框。

现在发生的情况是当客户端通过HTTP POST插入数据时,它会插入到具有当前日期时间的表中,并且应用程序每秒显示最新数据。这就是我的要求。完成!

我希望此帖可以帮助其他用户。

 private void Form1_Load(object sender, EventArgs e)
    {            
        timer1.Start();            
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        Web_Reference.Service1 service = new Web_Reference.Service1();
        DataTable dt = service.GetData();

        textBox1.Text = dt.Rows[0]["Current_Amount"].ToString();
        textBox2.Text = dt.Rows[0]["Current_Qty"].ToString();
        textBox3.Text = dt.Rows[0]["Rate"].ToString();            
    }