C#如何获取datagridview中某一整列的数据。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何获取datagridview中某一整列的数据。相关的知识,希望对你有一定的参考价值。

我现在有一堆数据,约5000个。

问题:
(1)现在,我想获取MAC号那列的所有数据作为一个集合,该怎么获取。
(2)获取到整列数据后,如何进行判断是否有相同的MAC号比较快速,用foreach吗。
如果有其他比较快速的方法,请指点一下。

三种方案:一种去sql语句去写,第二种就是循环做,没别的办法,5000条数据并不多,循环也是很快的。第三觉得用linq也是可以做的。
建议用循环做,比较清晰。
参考技术A 你的 datagridview 数据源是什么呢?追问

execl的。从execl里面获取的数据。

追答List<string> listMac = new List<string>();
foreach (DataGridViewRow item in this.dataGridView1.Rows)

    string tempMac = item.Cells[2].Value.ToString();//假设你的mac列在第二列
    if (!listMac.Contains(tempMac))
    
        listMac.Add(tempMac);
    
    else
    
        MessageBox.Show("重复mac");
    

追问

按照你的方法,查重通过了。我现在还有2个疑问。就是漏号与错序查询。

漏号:即00231F318352(假设在第0行第1列)与00231F318354(假设第1行第2列)之间有一个MAC号(00231F318353)没有这样的情况。

错序:即在第i行第1列的MAC号比第i+1行的MAC号大的情况。

这两个查询该如何弄呢。我给你加分。

追答

漏号,你的不同列数据怎么比????

你数据放进datagridview后是否排序好了?字符串比较可以用下面的方法
int result = string.Compare(strA,strB,false);
//返回1,strA比strB大;
//返回0,strA等于strB;
//返回-1,strA比strB小;

追问

打错了,是相邻行同列的数据。

追答

这个弄起来就有点麻烦咯

追问

嗯。还是感谢你。按照你的思路,把错序解决了。漏号我就自己再琢磨下。给你加分哈。

本回答被提问者采纳

C# Winform中 选中DatagridView控件中某行如何将该行某个字段(1,2,3,4,)的值绑定CheckedListBox控件的数

this.DatagridView1.SelectedRows[0].Cells[0].Value.ToString()//获取选中行的第一列的值
其他列以此类推
CheckedListBox1.Items.add(string value);//绑定追问

CheckedListBox1.Items.add(string value);//绑定
这个(string value)用不起啊,能说明清楚点吗?小弟初学者!!!麻烦各位大哥帮下忙了~

追答

string value是你要绑定的值,比如你需要列表绑定1、2、3代码如下:
CheckedListBox1.Items.add("1");
CheckedListBox1.Items.add("2");
CheckedListBox1.Items.add("3");

参考技术A 我是直接查找,再替换上去追问

那你是怎么做到的啊,能告诉我嘛??谢谢!!!

追答

private void dgvDic_CurrentCellChanged(object sender, EventArgs e)

在这儿检查是那个位置,以显示不同的列表框
switch(dgvDic.CurrentCell.ColumnIndex)

case 0:
。。。。
break;

case 1:
。。。。
break;




定位列表框的位置大小
public static void setComboBox(ref ComboBox cmbbox, ref DataGridView dgv)

Rectangle rect = new Rectangle();
rect = dgv.GetCellDisplayRectangle(dgv.CurrentCell.ColumnIndex, dgv.CurrentCell.RowIndex, false);
cmbbox.Left = rect.Left + dgv.Left;
cmbbox.Top = rect.Top + dgv.Top;
cmbbox.Width = rect.Width;
cmbbox.Height = rect.Height;
cmbbox.Visible = true;


替换值
private void cmbPageType_SelectedIndexChanged(object sender, EventArgs e)

dgvDic.CurrentCell.Value = tabPageType.Rows[cmbPageType.SelectedIndex]["t_type"].ToString();

参考技术B 先把值转成数组

以上是关于C#如何获取datagridview中某一整列的数据。的主要内容,如果未能解决你的问题,请参考以下文章

如何从C#中获取ListView中选中某一行某一列的值

如何获得DataGridView中某一列中全部的值?

layui数据表格如何根据列名修改整列的值?

c#怎么获得dataGridView中指定的列的内容

c#怎么获得dataGridView中指定的列的内容

请教一下,C#,我现在用datagridview中某一单元格操作另一个datagridview,请问思路是怎样的呢?