日期:2014-05-18  浏览次数:20822 次

在非绑定的DATAGRIDVIEW加入checkbox字段?
使用一个非数据绑定的DATAGRIDVIEW,在向它里添加行时,在行最后加一个checkbox型字段,如果这个checkbox被勾选,在触发删除时,就删除这一行,如果多行的checkbox被勾选,就删除多行。这个删除应该怎么写啊?如下图
C# code

//向DGV添加行
 private void pos_main_Load(object sender, EventArgs e)
        {
            DataGridViewCheckBoxColumn newcolumns = new DataGridViewCheckBoxColumn();
            newcolumns.HeaderText = "选择";
            this.data_list.Columns.Add("1", "货号");
            this.data_list.Columns.Add("2", "品名");
            this.data_list.Columns.Add("3", "产地");
            this.data_list.Columns.Add("4", "规格");
            this.data_list.Columns.Add("5", "单位");
            this.data_list.Columns.Add("6", "零售价");
            this.data_list.Columns.Add("7", "数量");
            this.data_list.Columns.Add(newcolumns);
            this.data_list.Columns[0].Width = 90;
            this.data_list.Columns[1].Width = 180;
            this.data_list.Columns[2].Width = 90;
            this.data_list.Columns[3].Width = 90;
            this.data_list.Columns[4].Width = 58;
            this.data_list.Columns[5].Width = 90;
            this.data_list.Columns[6].Width = 62;
            this.data_list.Columns[7].Width = 50; ;
        }



------解决方案--------------------
我是这样赋值的,高手勿喷
VB.NET code
For index = 0 To detailList.Count - 1
                Dim cellCheckBox1 As DataGridViewCheckBoxCell = New DataGridViewCheckBoxCell
                cellCheckBox1.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
                DgvSekisanItiran.Rows(index).Cells(7) = cellCheckBox1
            Next

------解决方案--------------------
判断那一列每个单元格的值,因为checkbox返回值是1或0或null
ok,如果是1,就删除为1的行就好了.
用vb.net写法
VB.NET code
for i as integer dgv.rows.count-2 to 0 step -1    'gv.rows.count-2是除去那个动态添加行
if dgv.rows(i).cells(7).formattedvalue=1 then    '用formattedvalue属性直接可以可以去除null的判断
dgv.rows.removeat(i)
end if
next