使用C#将1个dataGridView的数据拆分为2

时间:2016-12-09 13:41:57

标签: c# loops datagridview

我正在创建C#应用程序,我在winform dataGridView中从数据库加载数据。我有10秒间隔的计时器。我正在通过计时器刷新gridView。我想要的是当gridView再次加载数据时,它将新数据加载到第二个网格中。我想在第二个网格中新行。

我做了什么

我正在尝试计算gridView行,然后计算刷新数据后加载的数据集中的新行。如果数据集中有其他行,我想在新网格中使用这些行。

请帮助我或建议我如何申请循环

for (int i = gridRows; i < dataSetRows; i++)
 {
 drForSMS["USERID"] = ds.Tables[0].Rows[0][0].ToString();
 drForSMS["NAME"] = dataSetForDefautLoad.Tables[0].Rows[0][0].ToString();
 }

1 个答案:

答案 0 :(得分:0)

我认为更明确的方法是清除所有行,然后将网格绑定到新(刷新的)数据集。

首次打开应用程序时,将第一个网格绑定到DataSet,将第二个网格绑定到null。将第一个dataset保留在本地collection variable

在计时器事件中,将数据集加载到某个集合中并执行绑定。

List<int> list1 = new List<int>();

            list1.Add(1);
            list1.Add(2);

            // Now this is your refresh which will load all data from first load, plus the refresh load
            List<int> list2 = new List<int>();
            list2 = list1;
            list2.Add(3);
            list2.Add(4);
            list2.Add(5);

            // Now you want the new values only in list2
            // Like we said, keep the original list1 in local variable so you can do this
            foreach (var l in list1)
            {
                if (list2.Contains(l))
                    list2.Remove(l);
            }

然后只需将第二个网格绑定到null,然后绑定到list2

2。 另一种方法是: 运行应用程序时,保留第一个查询的计数。例如,你有5条记录。 然后对于第二个网格,您从5及以上循环以加载第二个网格。

DataSet dsFirst = new DataSet();         DataSet dsNew = new DataSet();

    var rows = dsFirst.Tables[0].Rows;

    var newRows = dsNew.Tables[0].Rows;

    // Choose your collection type here...
    var forBinding = new List<object>();

    for (int i = rows.Count - 1; i < newRows.Count; i++)
    {
        forBinding.Add(newRows[i]);
    }


    dataGrid.DataSource = forBinding;
  1. DataSet

    的示例

    DataSet dsFirst = new DataSet();         var initialCount = dsFirst.Tables [0] .Rows.Count;

        DataSet dsRefreshed = new DataSet();
    
        for (int i = 0; i < initialCount; i++)
        {
            dsRefreshed.Tables[0].Rows.RemoveAt(i);
        }
    
        dg.DataSource = dsRefreshed;
    
  2. 只需询问您是否需要根据代码进行调整。