作者: littleboy 2023-10-14 16:09:22

DataGradview

获得选择表格

要获取 DataGridView 中选定的单元格,可以使用 SelectedCells 属性。以下是一个示例:

1
2
3
List<object> selectedValues = new List<object>();
foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
{selectedValues.Add(cell.Value);}

获得列数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
private void DataTablRow()
{
#region 方法1:基于行的循环
// 用于存储结果的列表
List<object> columnDataList = new List<object>();
int columnIndex = 1; // 或者通过名称获取索引:

// 遍历所有行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
// 排除最后的“新行”(如果AllowUserToAddRows为true)
if (!row.IsNewRow)
{
// 获取单元格的值
object cellValue = row.Cells[columnIndex].Value;
columnDataList.Add(cellValue);
}
}
#endregion

#region 方法2:LINQ
// 获取“Age”列的所有值,跳过空行和新行
var cellValueCollection = dataGridView1.Rows
.Cast<DataGridViewRow>()
.Where(row => !row.IsNewRow) // 跳过新行
.Select(row => row.Cells["Age"].Value) // 选择指定单元格的值
.ToList(); // 生成List<object>

// 转换为object数组
object[] columnDataArray = cellValueCollection.ToArray();

// 如果明确类型,可以直接转换(例如转为int?,支持null)
int?[] ageArray = dataGridView1.Rows
.Cast<DataGridViewRow>()
.Where(row => !row.IsNewRow)
.Select(row =>
{
if (row.Cells["Age"].Value != null &&
int.TryParse(row.Cells["Age"].Value.ToString(), out int val))
return (int?)val;
return (int?)null; // 处理转换失败或为空的情况
})
.ToArray();
#endregion

#region 方法3:DataTable
//假设你明确知道数据源是DataTable
if (dataGridView1.DataSource is DataTable dt)
{
// 通过列名获取该列的所有数据(是一个object数组)
object[] columnDataList2 = dt.AsEnumerable().Select(row => row["ERP物料编号"]).ToArray();
DataRow[] rows = dt.Select();
}
#endregion

string 机壳编码 = (string)Microsoft.VisualBasic.Interaction.Switch(columnDataList.ToArray());
}equationMgr.Equation[i].Split('=')[1].Trim().All(char.IsNumber)