目前是用循环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```