英俊小先生 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 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败