首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dataGridView将1 C#的数据拆分为2

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

Stack Overflow用户
提问于 2016-12-09 13:41:57
回答 1查看 700关注 0票数 0

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

我做了什么,

我正在尝试计算gridView行,然后在刷新数据后加载的dataset中计数新行。如果dataset中还有其他行,我希望这些行位于新的网格中。

请帮助我或建议我如何应用循环。

代码语言:javascript
复制
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();
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-09 13:46:06

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

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

在timer事件中,将数据集加载到某些集合并执行绑定。

代码语言:javascript
复制
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

  1. 另一种方法是:在运行应用程序时保留第一个查询的计数。例如,你有5张唱片。然后,对于第二个网格,您可以从5和更高的位置循环来加载第二个网格。

DataSet dsFirst =新DataSet();DataSet dsNew =新DataSet();

代码语言:javascript
复制
    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 =新DataSet();var initialCount = dsFirst.Tables.Rows.Count; DataSet dsRefreshed =新的DataSet();for (int i= 0;i< initialCount;i++) { dsRefreshed.Tables.Rows.RemoveAt(i);} dg.DataSource = dsRefreshed;

只需询问是否需要将其调整为代码即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41061818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档