sinat_29365483
英俊小先生
采纳率100%
2017-08-28 09:52

求datagridview快速填充的方法

5
  • c#
  • datagridvi...
  • sql
  • winform
已采纳

目前是用循环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条回答

  • sinat_29365483 英俊小先生 4年前

    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```

    
    
    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 4年前

为你推荐