如何将列表中包含数据的列和行插入到 DataGridView(C#,Windows 窗体)
How to insert columns and rows with data in Lists into DataGridView (C# , Windows Forms)
此项目基于 Windows Forms (.NET Framework),C#。
假设我有 3 个列表,其值分别命名为;
List<string> ListAlternatives = new List<string>();
List<string> ListParameters = new List<string>();
List<int> ListWeight = new List<int>();
其中已经填充了数据。我的目标是将这些列表中的数据插入到 DataGridView;分为两列参数(传球,速度,...)和重量(1、4,...)和一行替代方案(Player1,Player2,...),如下所示。 Alternatives 下的数字稍后将手动插入到 DataGridView(用鼠标单击单元格并写入数字),这将用于使用 Weight 参数计算总分。
+------------+--------+--------+--------+------ --+
|参数 |重量 |玩家1 |玩家2 |玩家3 |
+------------+--------+--------+--------+------ --+
|通过 | 1 | 2 | 3 | 10 |
|速度 | 4 | 8 | 10 | 2 |
|年龄 | 3 | 1 | 9 | 3 |
|射击 | 8 | 4 | 1 | 4 |
+------------+--------+--------+--------+------ --+
|总计 |--------| | | |
+------------+--------+--------+--------+------ --+
我认为我可以通过操作列表进行计算,但我无法插入数据。问题是我尝试使用下面的代码导入数据,但由于索引问题没有成功。
dataGridView1.Columns.Add("ParameterColumn", "Parameters");
for (int i = 0; i < ListParameters.Count(); i++)
{
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(dataGridView1);
row.Cells[0].Value = ListParameters[i];
dataGridView1.Rows.Add(row);
}
foreach (var item in ListAlternatives)
{
dataGridView1.Columns.Add(item, item);
}
额外问题;
在 table 中已有数据后,如果我想手动更改权重属性(在 DataGridView 中单击它们并写入新值),会有任何问题吗?我的目标是创建一些包含许多不同值的图表。我一直在想,如果我只是循环 DataGridView 并将数据放入新列表中——我是否能够使用它们高效地创建图表?谢谢大家的回答
请尝试以下代码,如有错误请返回。
dataGridView1.Columns.Add("ParameterColumn", "Parameters");
dataGridView1.Columns.Add("WeightColumn", "Weight");
for (int i = 0; i < ListAlternatives.Count(); i++)
{
dataGridView1.Columns.Add("Player" + i.ToString() + "Column", "Player " + i.ToString());
}
for (int i = 0; i < ListParameters.Count(); i++)
{
dataGridView1.Rows.Add(ListParameters[i], ListWeight[i]);
}
dataGridView1.Rows.Add("Total");
dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[1].Value = ListWeight.Sum();//This is for getting sum of weights
编辑:
在事件之外添加以下行,例如以上 private void button1_click
:
List<int> multiples = new List<int>();
将此代码输入到要计算值的按钮的单击事件中:
dataGridView1.AllowUserToAddRows = false;
foreach (DataGridViewColumn col in dataGridView1.Columns.Cast<DataGridViewColumn>().Skip(2))
{
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
int multiple = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value) * Convert.ToInt32(dataGridView1.Rows[i].Cells[col.Index].Value);
multiples.Add(multiple);
multiple = 0;
}
dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[col.Index].Value = multiples.Sum();
multiples.Clear();
}
此项目基于 Windows Forms (.NET Framework),C#。
假设我有 3 个列表,其值分别命名为;
List<string> ListAlternatives = new List<string>();
List<string> ListParameters = new List<string>();
List<int> ListWeight = new List<int>();
其中已经填充了数据。我的目标是将这些列表中的数据插入到 DataGridView;分为两列参数(传球,速度,...)和重量(1、4,...)和一行替代方案(Player1,Player2,...),如下所示。 Alternatives 下的数字稍后将手动插入到 DataGridView(用鼠标单击单元格并写入数字),这将用于使用 Weight 参数计算总分。
+------------+--------+--------+--------+------ --+ |参数 |重量 |玩家1 |玩家2 |玩家3 | +------------+--------+--------+--------+------ --+ |通过 | 1 | 2 | 3 | 10 | |速度 | 4 | 8 | 10 | 2 | |年龄 | 3 | 1 | 9 | 3 | |射击 | 8 | 4 | 1 | 4 | +------------+--------+--------+--------+------ --+ |总计 |--------| | | | +------------+--------+--------+--------+------ --+
我认为我可以通过操作列表进行计算,但我无法插入数据。问题是我尝试使用下面的代码导入数据,但由于索引问题没有成功。
dataGridView1.Columns.Add("ParameterColumn", "Parameters");
for (int i = 0; i < ListParameters.Count(); i++)
{
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(dataGridView1);
row.Cells[0].Value = ListParameters[i];
dataGridView1.Rows.Add(row);
}
foreach (var item in ListAlternatives)
{
dataGridView1.Columns.Add(item, item);
}
额外问题;
在 table 中已有数据后,如果我想手动更改权重属性(在 DataGridView 中单击它们并写入新值),会有任何问题吗?我的目标是创建一些包含许多不同值的图表。我一直在想,如果我只是循环 DataGridView 并将数据放入新列表中——我是否能够使用它们高效地创建图表?谢谢大家的回答
请尝试以下代码,如有错误请返回。
dataGridView1.Columns.Add("ParameterColumn", "Parameters");
dataGridView1.Columns.Add("WeightColumn", "Weight");
for (int i = 0; i < ListAlternatives.Count(); i++)
{
dataGridView1.Columns.Add("Player" + i.ToString() + "Column", "Player " + i.ToString());
}
for (int i = 0; i < ListParameters.Count(); i++)
{
dataGridView1.Rows.Add(ListParameters[i], ListWeight[i]);
}
dataGridView1.Rows.Add("Total");
dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[1].Value = ListWeight.Sum();//This is for getting sum of weights
编辑:
在事件之外添加以下行,例如以上 private void button1_click
:
List<int> multiples = new List<int>();
将此代码输入到要计算值的按钮的单击事件中:
dataGridView1.AllowUserToAddRows = false;
foreach (DataGridViewColumn col in dataGridView1.Columns.Cast<DataGridViewColumn>().Skip(2))
{
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
int multiple = Convert.ToInt32(dataGridView1.Rows[i].Cells[1].Value) * Convert.ToInt32(dataGridView1.Rows[i].Cells[col.Index].Value);
multiples.Add(multiple);
multiple = 0;
}
dataGridView1.Rows[dataGridView1.RowCount - 1].Cells[col.Index].Value = multiples.Sum();
multiples.Clear();
}