DataGridView、List<T>相关操作
一、DataGridView数据转成DataTable
1.已绑定过数据源:
DataTable dt = (dataGridView1.DataSource as DataTable)
2.未绑定过数据源:
public DataTable GetDgvToTable(DataGridView dgv)
{
DataTable dt = new DataTable();
// 列强制转换
for (int count = 0; count < dgv.Columns.Count; count++)
{
DataColumn dc = new DataColumn(dgv.Columns[count].Name.ToString());
dt.Columns.Add(dc);
}
// 循环行
for (int count = 0; count < dgv.Rows.Count; count++)
{
DataRow dr = dt.NewRow();
for (int countsub = 0; countsub < dgv.Columns.Count; countsub++)
{
dr[countsub] = Convert.ToString(dgv.Rows[count].Cells[countsub].Value);
}
dt.Rows.Add(dr);
}
return dt;
}
二、
1.刷新:重新绑定
2.清空:绑定null
3、 dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False; 第一列隐藏
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 行选中模式
4、动态绑定列名
foreach (DataColumn dataColumn in AppDataSet.Tables[0].Columns)
{
DataColumnSrv dataColumnSrv = new DataColumnSrv(dataColumn);
if (dataColumnSrv.IsQuery)
{
myStyleDataGridView1.Columns.Add(dataColumn.ColumnName, dataColumn.Caption);
myStyleDataGridView1.Columns[dataColumn.ColumnName].DataPropertyName = dataColumn.ColumnName;
myStyleDataGridView1.Columns[dataColumn.ColumnName].ReadOnly = true;
}
}
三、
1.声明全局变量对象:public object Message { get; set; }
2.选中当前行
DataRow dataRow = (this.myDataGridView1.CurrentRow.DataBoundItem as DataRowView).Row;
3、存储在泛型List<T>对象中
List<DataRow> list = new List<DataRow>() { dataRow };
this.Message = list;
4.变量保存选中的行
List<string> rets = new List<string>();
foreach (DataGridViewRow item in dgv.Rows)
{
if (item.Cells[0].Value + "" == "1")
{
rets.Add(item.Cells["CZDepart"].Value + "");
}
}
this.Message = rets;
5、List中去重复,并用"-"连接起来
List<string> rets = pop.Message as List<string>;
if (rets != null)
{
DataRow dataRow = FormUtil.GetCurrentRow(AppBindingSources, dgv.BindTable);
if (dataRow == null)
return;
string col003 = dataRow["Col_003"] + "";
if (!col003.IsNullOrWhiteSpace())
{
rets.AddRange(col003.Split('-'));
}
rets.Remove("");
dataRow["Col_003"] = string.Join("-", rets.Distinct());//去重复,并用"-"连接起来
}
6.选定行转DataTable
DataTable dtTemp = dgv1.SelectedDataRows.CopyToDataTable();
7.DataGrideView转到DatTable
public static DataTable DataTableChangeColumnName(MyDataGridView dgv, DataTable dtImport)
{
if (dtImport == null) { return null; }
DataTable dtCheck = null;
//列名集合找到,替换
dtImport.TableName = dgv.BindTableName;
dtCheck = dtImport.Copy();
foreach (DataColumn dc in dtCheck.Columns)
{
for (int i = 0; i < dgv.Columns.Count; i++)
{
if (dc.ColumnName.Trim().Equals(dgv.Columns[i].HeaderText.Trim()))
{
dc.ColumnName = dgv.Columns[i].DataPropertyName.Trim();
}
}
}
return dtCheck;
}
8.编辑状态下,取消事件
//编辑状态下
private void dgv_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (dgv.Columns[e.ColumnIndex].Name == "Col_003")
{
e.Cancel = true;
}
}
9、 键值对用法
汇总
private void getTotal()
{
dict.Clear();
for (int i = 0; i < this.dataGridView1.RowCount; i++)
{
if ((dataGridView1.Rows[i].Cells["IsSelect"].Value + "").ToUpper() == "TRUE")
{
if (!dict.ContainsKey(dataGridView1.Rows[i].Cells["公司名称"].Value + "") || !dict.ContainsValue(dataGridView1.Rows[i].Cells["类型"].Value + ""))
dict.Add(dataGridView1.Rows[i].Cells["公司名称"].Value + "", dataGridView1.Rows[i].Cells["类型"].Value + "");
}
}
}
遍历
foreach (KeyValuePair<string, string> kvp in dict)
{
if (kvp.Value.Equals("取"))
{
mSql += string.Format("UPDATE Table1 SET PickDiffDegree ={0} WHERE Company=N'{1}' ;" + Environment.NewLine, mNdNumber, kvp.Key);
}
}
DataGridView、List<T>相关操作的更多相关文章
- DataGridView 相关操作
一.单元格内容的操作// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...
- pip的相关操作
>Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- php对二维数组进行相关操作(排序、转换、去空白等)
php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...
- SQL语言和DML相关操作以及相应的运算符
SQL 1.结构化查询语言 2.特点 a.第四代编程语言,更接近自然语言 b必须有数据库系统解释执行 c.对象名,关键字不区分大小写 d.字符串必须要用单引号引起来,不能用双引号 e.每条语句最后用分 ...
- 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作
上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...
随机推荐
- Q - Phalanx
题目链接:https://vjudge.net/contest/68966#problem/Q 分析:这里的对称并不是指的是关于原矩阵(也就是最大的那一个)主对角线对称,而是对于每一个小的矩阵来说,当 ...
- 线段树区间更新(set暴力)
题目链接:https://cn.vjudge.net/contest/66989#problem/I 具体思路:使用栈存储村庄被损坏的顺序,然后set存的是被损坏的村庄,然后每一次查询,直接找到要查询 ...
- UNIX环境高级编程 第14章 高级I/O
这一章涉及很多概念和函数,包括:非阻塞I/O.记录锁.I/O复用.异步I/O.readv和writev函数以及内存映射. 非阻塞I/O 在Unix中,可以将系统调用分为两种,一种是“低速”系统调用,另 ...
- Python raw_input和input总结 在版本2和版本3中的区别
Python 2.3.4 (#1, Feb 2 2005, 11:44:13) [GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2 Type &q ...
- 【bzoj题解】1012 最大数
题目描述 现在请求你维护一个数列,要求提供以下两种操作:1.查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2.插入操作.语法:A ...
- idea中使用tomcat 方式启动spring boot项目
Spring boot 的main 入口启动方式相信都会用,直接运行main直接就启动了,但是往往这种方式并不是最佳的启动方式,比如运维的层面更希望调整tomcat的调优参数,而只使用嵌入启动方式很难 ...
- CKEDITOR的内容js转码,C#控制器解码接收
<script type="text/javascript" src="<%=Url.Content("~/Resource/ckeditor/ck ...
- jumpserver安装教程
centos7系统一步一步安装jumpserver 参照官方文档,查找了百度所有的文档,基本上都是按照官方的文档操作的 官方文档点我-> 安装jumpserver需注意: 1:网络环境要好,有的 ...
- 七、springboot整合Spring-data-jpa
1.Spring Data JPA是什么 由Spring提供的一个用于简化JPA开发的框架.可以在几乎不用写实现的情况下,实现对数据的访问和操作.除了CRUD外,还包括如分页.排序等一些常用的功能 1 ...
- 如何提高PHP执行效率
用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说 ...