一、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>相关操作的更多相关文章

  1. DataGridView 相关操作

    一.单元格内容的操作// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...

  2. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  3. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  4. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  5. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  6. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

  7. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  8. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

  9. SQL语言和DML相关操作以及相应的运算符

    SQL 1.结构化查询语言 2.特点 a.第四代编程语言,更接近自然语言 b必须有数据库系统解释执行 c.对象名,关键字不区分大小写 d.字符串必须要用单引号引起来,不能用双引号 e.每条语句最后用分 ...

  10. 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作

    上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...

随机推荐

  1. HDU 1556 Color the ball (树状数组 区间更新+单点查询)

    题目链接 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽&quo ...

  2. 36、IO流概述和分类

    IO流概述 IO流的主要作用是用来处理设备之间的数据传输,例如可以使用IO流将一台电脑硬盘里面的照片传输到另一台电脑上面,即将照片转换为字节,然后将字节传到另一台电脑上面,另一台电脑接收后,可以将这些 ...

  3. F - Number of Connected Components UVALive - 7638 (并查集 + 思维)

    题目链接:https://cn.vjudge.net/contest/275589#problem/F 题目大意:就是给你n个数,如果说两个数之间的gcd!=1,那么就将这两个点连起来,问你最终这些点 ...

  4. win10+anaconda虚拟环境python3.6+cuda9.0+cudnn7+pytorch0.4.1

    anaconda下jupyter notebook的打开目录的修改:参考:https://www.cnblogs.com/amberdata/p/7907845.html pytorch官网:http ...

  5. CSS3 transition过渡

    transition 属性是一个简写属性,用于设置四个过渡属性: transition: property duration timing-function delay; transition-pro ...

  6. css3新增的属性

    由于CSS5标准还未完全订下来,所以各种内核的浏览器都有自己的标准,为了不使属性混淆,所以各家在各自标准前加了一个前缀, 如:-moz-       firefox火狐 -ms-         IE ...

  7. PL/SQ连接oracle,L 新建表的时候, virtual那一列是什么意思

    Virtual标示该栏位是否为虚拟列. https://www.2cto.com/database/201306/216917.html

  8. 安裝HA服務

    **************************************************************************************************** ...

  9. 大数据系列之分布式大数据查询引擎Presto

    关于presto部署及详细介绍请参考官方链接 http://prestodb-china.com PRESTO是什么? Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持G ...

  10. linux文件管理 -> vim编辑总结

    vi和vim命令是linux中强大的文本编辑器, 由于Linux系统一切皆文件,而配置一个服务就是在修改其配置文件的参数.vim编辑器是运维工程师必须掌握的一个工具, 没有它很多工作都无法完成.vim ...