RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1278553
Accepted
Иван Рудаков
Иван Рудаков
Asked:2022-05-06 02:03:53 +0000 UTC2022-05-06 02:03:53 +0000 UTC 2022-05-06 02:03:53 +0000 UTC

C# 提示与数据库更新逻辑的组织

  • 772

大家好 =) 我正在解析来自该站点的更新数据数据

我将它们存储在DataTable中,数据每秒更新一次,随机位置,在解析过程中,可以删除站点中的行或出现新的行,即无法绑定到id或索引. 对数据库没有太多经验,我几乎没有使用它们,我尝试过的没有成功。由于数据不稳定,每次都可以将新数据从数据库显示到datagridview,然后清空数据库,再次填充数据库,用这种方式更新时,datagridview的差异并不明显,似乎这是一个活表,即从站点更新。我试图在没有循环等的情况下做到这一点,它非常适合我。但是在主代码中却不是这样,数据库是按照原理填充的

for(int i =0; i <++)
 {
     for(int s =0; s <++) 
     {
     DataTableOne.Rows.Add("Здесь заношу данные");
     }
 }
dataGridView1.DataSource = DataTableOne; dataGridView1.Update(); 
DataTableOne.Clear(); //Было бы идеально, если так бд очищалась бы и заполнялась заново.

当主动改变datagrid中的数据时,看起来是活表,而是DataTableOne.Clear(); 清除数据库并且数据网格中的数据也被删除。我也尝试过使用这样的替换表

 flagRateTable = true;
    for(int i =0; i <++)
     {
         for(int s =0; s <++) 
         {
         DataTableOne.Rows.Add("Здесь заношу данные");
         DataTableTwo.Rows.Add("Здесь заношу данные");
         }
     }
if (flagRateTable)
                    {
                        DataTableTwo.Clear();
                        dataGridView1.DataSource = DataTableOne; dataGridView1.Update();                    
                        flagRateTable = false;
                    }
                    else
                    {
                        DataTableOne.Clear();
                        dataGridView1.DataSource = DataTableTwo; dataGridView1.Update();                    
                        flagRateTable = true;
                    }

逻辑上,如果flagRateTable为真,我清除第二个数据库,在dataGridView1中显示DataTableOne;如果flagRateTable为假,我清除第一个数据库,在dataGridView1中显示DataTableTwo。理论上,一切都应该工作,但相反,我显示了两个数据库,也就是说,与从 dataGridView1 清除的第一个示例一样,所有显示的数据都被删除,在第二个示例中,两个表都显示,一个一个清除,并且一起显示。提示逻辑以及如何更好地更新类似的数据库。

c#
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Alexander Petrov
    2022-05-06T02:44:29Z2022-05-06T02:44:29Z

    如果我正确理解了这个问题:

    public partial class Form1 : Form
    {
        DoubleBufferedDataGridView dataGridView;
        Button updateButton;
    
        DataTable dataTable1;
        DataTable dataTable2;
    
        Random random = new Random();
    
        public Form1()
        {
            //InitializeComponent();
            dataGridView = new DoubleBufferedDataGridView { Parent = this, Dock = DockStyle.Top, Height = 200 };
            updateButton = new Button { Parent = this, Text = "Update", Top = dataGridView.Bottom + 20 };
    
            updateButton.Enabled = false;
            updateButton.Click += UpdateButton_Click;
            this.Load += Form1_Load;
        }
    
        private async void Form1_Load(object sender, EventArgs e)
        {
            dataTable1 = new DataTable();
    
            dataTable1.Columns.Add("id", typeof(int));
            dataTable1.Columns.Add("value", typeof(double));
    
            dataTable2 = dataTable1.Clone();
    
            await FillDataTable(dataTable1);
            dataGridView.DataSource = dataTable1;
    
            await FillDataTable(dataTable2);
            updateButton.Enabled = true;
        }
    
        private Task FillDataTable(DataTable dataTable)
        {
            return Task.Run(() =>
            {
                dataTable.Clear();
    
                for (int i = 0; i < 10; i++)
                    dataTable.Rows.Add(random.Next(), random.NextDouble());
            });
        }
    
        private async void UpdateButton_Click(object sender, EventArgs e)
        {
            updateButton.Enabled = false;
    
            if (dataGridView.DataSource == dataTable1)
            {
                dataGridView.DataSource = dataTable2;
                await FillDataTable(dataTable1);
            }
            else
            {
                dataGridView.DataSource = dataTable1;
                await FillDataTable(dataTable2);
            }
    
            updateButton.Enabled = true;
        }
    }
    

    两个数据表。在应用程序开始时,第一个被填充并绑定到网格。与此同时,第二个正在填满。

    当您按下按钮时,它们会改变位置。再一次,另一个数据表充满了数据。

    我更改了按钮的可访问性(属性Enabled),以便在新数据完全加载之前无法单击它。

    在该方法FillDataTable中,实现用于获取新数据并将其放入的代码DataTable。


    双缓冲网格:

    public class DoubleBufferedDataGridView : DataGridView
    {
        protected override bool DoubleBuffered => true;
    }
    

    使用的命名空间:

    using System;
    using System.Data;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    • 5

相关问题

  • 使用嵌套类导出 xml 文件

  • 分层数据模板 [WPF]

  • 如何在 WPF 中为 ListView 手动创建列?

  • 在 2D 空间中,Collider 2D 挂在玩家身上,它对敌人的重量相同,我需要它这样当它们碰撞时,它们不会飞向不同的方向。统一

  • 如何在 c# 中使用 python 神经网络来创建语音合成?

  • 如何知道类中的方法是否属于接口?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5