英俊小先生 2017-08-28 09:52 采纳率: 100%
浏览 2001
已采纳

求datagridview快速填充的方法

目前是用循环list填充的,但是数据一多,还要赋颜色等等操作,卡成狗。有一列是checkbox的,没法datatable,或者我用不来。求问大佬平时都是如何填充dgv的,并且保证界面不卡住。winform。

if (_or.Count > 0)
{
for (int i = 0; i < _or.Count; i++)
{
int rowIndex = dgv_newOrder.Rows.Add();
dgv_newOrder.Rows[rowIndex].Cells[0].Value = false;
dgv_newOrder.Rows[rowIndex].Tag = _or[i];
if (_or[i].ksrq.Length > 8)
{
_or[i].ksrq = _or[i].ksrq.Insert(8, " ");
_or[i].ksrq = _or[i].ksrq.Insert(6, "-");
_or[i].ksrq = _or[i].ksrq.Insert(4, "-");
}
if (_or[i].tzrq.Length > 8)
{
_or[i].tzrq = _or[i].tzrq.Insert(8, " ");
_or[i].tzrq = _or[i].tzrq.Insert(6, "-");
_or[i].tzrq = _or[i].tzrq.Insert(4, "-");
}
dgv_newOrder.Rows[rowIndex].Cells[1].Value = _or[i].bedNo;
dgv_newOrder.Rows[rowIndex].Cells[2].Value = _or[i].name;
if (_or[i].CQLS == "1")
dgv_newOrder.Rows[rowIndex].Cells[3].Value = "长期";
else
dgv_newOrder.Rows[rowIndex].Cells[3].Value = "临时";
dgv_newOrder.Rows[rowIndex].Cells[4].Value = _or[i].yzlx;
dgv_newOrder.Rows[rowIndex].Cells[5].Value = _or[i].ordername + ":" + _or[i].groupno;
dgv_newOrder.Rows[rowIndex].Cells[6].Value = _or[i].supplyname;
dgv_newOrder.Rows[rowIndex].Cells[7].Value = _or[i].frequcode;
dgv_newOrder.Rows[rowIndex].Cells[8].Value = _or[i].zxdwl;
dgv_newOrder.Rows[rowIndex].Cells[9].Value = _or[i].zxdw.Trim();
dgv_newOrder.Rows[rowIndex].Cells[10].Value = _or[i].drugquan.Trim();
dgv_newOrder.Rows[rowIndex].Cells[11].Value = _or[i].ksrq;
dgv_newOrder.Rows[rowIndex].Cells[12].Value = _or[i].tzrq;
}
}
经过测试,卡的地方在这段。
我是填充数据的时候卡,不是sql查询的时候卡。有一列checkbox,选中的时候有事件,需要整行的tag```

  • 写回答

2条回答

  • 英俊小先生 2017-08-29 01:57
    关注

    if (_or.Count > 0)
    {
    for (int i = 0; i < _or.Count; i++)
    {
    int rowIndex = dgv_newOrder.Rows.Add();
    dgv_newOrder.Rows[rowIndex].Cells[0].Value = false;
    dgv_newOrder.Rows[rowIndex].Tag = _or[i];
    if (_or[i].ksrq.Length > 8)
    {
    _or[i].ksrq = _or[i].ksrq.Insert(8, " ");
    _or[i].ksrq = _or[i].ksrq.Insert(6, "-");
    _or[i].ksrq = _or[i].ksrq.Insert(4, "-");
    }
    if (_or[i].tzrq.Length > 8)
    {
    _or[i].tzrq = _or[i].tzrq.Insert(8, " ");
    _or[i].tzrq = _or[i].tzrq.Insert(6, "-");
    _or[i].tzrq = _or[i].tzrq.Insert(4, "-");
    }
    dgv_newOrder.Rows[rowIndex].Cells[1].Value = _or[i].bedNo;
    dgv_newOrder.Rows[rowIndex].Cells[2].Value = _or[i].name;
    if (_or[i].CQLS == "1")
    dgv_newOrder.Rows[rowIndex].Cells[3].Value = "长期";
    else
    dgv_newOrder.Rows[rowIndex].Cells[3].Value = "临时";
    dgv_newOrder.Rows[rowIndex].Cells[4].Value = _or[i].yzlx;
    dgv_newOrder.Rows[rowIndex].Cells[5].Value = _or[i].ordername + ":" + _or[i].groupno;
    dgv_newOrder.Rows[rowIndex].Cells[6].Value = _or[i].supplyname;
    dgv_newOrder.Rows[rowIndex].Cells[7].Value = _or[i].frequcode;
    dgv_newOrder.Rows[rowIndex].Cells[8].Value = _or[i].zxdwl;
    dgv_newOrder.Rows[rowIndex].Cells[9].Value = _or[i].zxdw.Trim();
    dgv_newOrder.Rows[rowIndex].Cells[10].Value = _or[i].drugquan.Trim();
    dgv_newOrder.Rows[rowIndex].Cells[11].Value = _or[i].ksrq;
    dgv_newOrder.Rows[rowIndex].Cells[12].Value = _or[i].tzrq;
    }
    }
    经过测试,卡的地方在这段。
    我是填充数据的时候卡,不是sql查询的时候卡。有一列checkbox,选中的时候有事件,需要整行的tag```

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波