在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox
dataGridView绑定后
bool[] mark = new bool[this.dataGridView1.Rows.Count];
for (int i = ; i < mark.Length; i++)
{ mark[i] = false;
}
//如果你想那个默认被选中 也把相应的mark[i]改为true;
在dataGridView1_CellContentClick事件中
if (e.ColumnIndex == )
{
mark[e.RowIndex] = !mark[e.RowIndex];
}
在button_Click事件中
for (int i = ; i < mark.Length; i++)
{
if (mark[i])
MessageBox.Show(this.dataGridView1.Rows[i].Cells[].Value.ToString());
}
this.dataGridView1 添加了一个DataGridViewCheckBoxColumn 列
为this.dataGridView1.Rows[0]
Cells[0]为checkboxcolumn
this.dataGridView1.Rows[i].Cells[1]为你绑定的数据
private void GetAllIetmDmodule()
{
IList<IetmDmodule> IetmDmodulelist = new List<IetmDmodule>();
IIetmDmoduleService IetmDmoduleService = new IetmDmoduleService();
IetmDmodulelist = IetmDmoduleService.GetAllIetmDmodule();
if (IetmDmodulelist != null)
{
foreach (IetmDmodule dmodule in IetmDmodulelist)
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dataGridView1);
dgvRow.Cells[].Value = dmodule.Subject;
dgvRow.Cells[].Value = "";
dgvRow.Cells[].Value = dmodule.Creator;
dataGridView1.Rows.Add(dgvRow);
}
mark = new bool[this.dataGridView1.Rows.Count];
for (int i = ; i < mark.Length; i++)
{
mark[i] = false;
}
}
}
重新整理了一下.
一,如果数据源中有bool类型的列,在绑定之后会自动以checkbox的形式显示,
如果你的是这种情况,只需要在点击button的时候遍历判断即可.
如果数据源中没有可以采用下列方式添加:
ps:数据源为DataTable
//Add a Column with checkbox at last in the Grid
DataColumn dtcCheck = new DataColumn("IsMandatory");//create the data //column object with the name
dtcCheck.DataType = System.Type.GetType("System.Boolean");//Set its //data Type
dtcCheck.DefaultValue = false;//Set the default value
DataTable.Columns.Add(dtcCheck);//Add the above column to the //Data Table
二,数据源中没有,只是在DataGridView中存在.
手动添加为:右键点datagridview,编辑列,添加,设置其类型为datagridviewcheckbox
代码添加如下:
this.dataGridView1.Columns.Insert(, new DataGridViewCheckBoxColumn());
for (int i = ; i < this.dataGridView1.Rows.Count; i++)
{
//为datagridviewcheckbox列赋值
this.dataGridView1.Rows[i].Cells[].Value = true;
}
在DataGridView的CellContentClick事件下写
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//判断点的是否是datagridviewcheckbox列并且不是列头
if (e.ColumnIndex == && e.RowIndex != -)
{
//dataGridView1.Rows[e.RowIndex].Cells[0].Value = (bool)dataGridView1.Rows[e.RowIndex].Cells[0].EditedFormattedValue;
//两种皆可
dataGridView1.Rows[e.RowIndex].Cells[].Value = !(bool)dataGridView1.Rows[e.RowIndex].Cells[].Value;
}
}
在button的Click事件下:
private void button_Click(object sender, EventArgs e)
{
for (int i = ; i < this.dataGridView1.Rows.Count; i++)
{
if ((bool)this.dataGridView1.Rows[i].Cells[].Value)
MessageBox.Show("选择的是第 " + (i+).ToString()+" 行");
}
}
在winform中给GridView加checkbox在按钮点击的时候获取选中的checkbox的更多相关文章
- 设计winform自带动态加载工具按钮和实现热键响应
1.初衷 主要是想设计一个自带添加工具按钮和按钮的快捷键的基窗体.这样以后所设计的窗体只要继承自这个窗体就可以实现热键响应和动态加工具按钮的功能了 写这边文章主要是为了以后使用的时候有个参考,因为这只 ...
- Jquery获取选中的checkbox的值
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- 在 WinForm 中 如何实现 加载等待功能
1,需要一个动态的londing文件:在项目中我们新建一个文件夹来存放它: 2,在需要出现londing状态的窗体上加上一个Panel: 黄色区域是Panel,灰色的是需要被加载的区域.当需要触发lo ...
- WinForm中实现Loading加载界面
1,LoaderForm窗体中添加PictureBox,然后添加Loading图片 2,窗体内属性设置 StartPosition :CenterScreen在屏幕中心显示 TopMost:True置 ...
- Android中一张图片加载后所占用内存大小的获取与测试
Android程序中一旦加载的图片比较多,就有可能出现Out of Memory而导致程序崩溃.这个一方面是因为Android系统本身对于每个单独的进程有内存大小的限制(有16M,64M,128M,2 ...
- WinForm中如何判断关闭事件来源于用户点击右上角的“关闭”按钮
在C#的WinForm程序中,有的时候需要判定关闭请求从哪里发出来的.比如是用户点击了右上角的“关闭”按钮,还是调用了WinForm.Close()方法.最典型的是要知道点击右上角的“关闭”按钮发出的 ...
- 【转】GridView 加载空行并点击编辑每一个单元格
代码 <script runat="server"> protectedvoid Button1_Click(object sender, System.EventAr ...
- JQuery判断checkbox选中,jquery获取选中的checkbox
选中的radio $('input[name="radInvoiceType"]:checked').val(); 这样能获得 $('input[name="radInv ...
- angular JS中使用jquery datatable 自定义搜索按钮点击事件 和mRender的 ng-click事件
'use strict'; app.controller('DataTableCtrl', function ($scope, $compile) { $scope.searchFiles = { n ...
随机推荐
- Eclipse解决JSP页面乱码问题
解决方案 1.首先选择 Window --> Preferences --> General--> Content Types --> text (点击左边的+,显示 ...
- 2.4 使用ARDUINO控制MC20进行GPS数据的获取和解析
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- Vue:实践学习笔记(3)——组件使用
Vue:实践学习笔记(3)——组件使用 全局注册 1.注册组件 Vue.component('my-component',{ //选项 }) 说明:my-component就是注册的组件自定义的标签名 ...
- Ubuntu 16.04 php卸载
1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...
- 寻找最大(小)的K个数
<<编程之美>>一书中提到了寻找最大的K个数的问题,问题可以简单描述为:在长度为N的数组中,寻找第K(K<N)个最大的数.问题的解法涉及到了很多排序算法,对我们理解和运用 ...
- ZOJ 3959 Problem Preparation 【水】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3959 AC代码 #include <cstdio> ...
- Python学习进程(10)字典
本节介绍Python中的字典:是另一种可变容器模型,且可存储任意类型对象. (1)字典简介: 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割 ...
- qq 微信 微博 第三方分享
<html> <head> <meta charset="utf-8"> <meta name="viewport" ...
- C#遍历指定文件夹中的所有文件
DirectoryInfo TheFolder=new DirectoryInfo(folderFullName);//遍历文件夹foreach(DirectoryInfo NextFolder in ...
- HDFS的设计
当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上.管理网络中跨多台计算机存储的文件系统成为分布式文件系统(distribute ...