【发布时间】:2017-03-30 09:32:27
【问题描述】:
我有一个 DataGridView 组件,用于向用户展示一些价值。它由 5 列组成:4 个字符串和 1 个复选框。这是我创建列并将它们添加到 conrtol 的代码:
// class variables
const int NUM_COLUMNS = 5;
DataGridViewColumn[] columns;
DataGridViewCheckBoxColumn checkColumn;
List <String> columnsHeaderName;
// init method
private void init_dataGridView()
{
// init all components
columnsHeaderName = new List<string>();
columns = new DataGridViewColumn[NUM_COLUMNS - 1]; // minus one becouse last one is a check box column
checkColumn = new DataGridViewCheckBoxColumn(); // last one
// columns descriptions
columnsHeaderName.Add("File path");
columnsHeaderName.Add("Sampling");
columnsHeaderName.Add("Start Date");
columnsHeaderName.Add("End Date");
columnsHeaderName.Add("Select");
for (int i = 0; i < NUM_COLUMNS - 1; i++)
{
// create, configure and add n-1 columns
columns[i] = new DataGridViewColumn();
columns[i].Name = Convert.ToString(i);
columns[i].HeaderText = columnsHeaderName[i];
columns[i].ReadOnly = true;
this.dataGridView1.Columns.Add(columns[i]);
}
// create, configure and add last column
checkColumn.Name = Convert.ToString(NUM_COLUMNS - 1);// (NUM_COLUMNS - 1).ToString();
checkColumn.HeaderText = columnsHeaderName[NUM_COLUMNS - 1];
checkColumn.Width = 50;
checkColumn.ReadOnly = false;
checkColumn.FillWeight = 10; //if the datagridview is resized (on form resize) the checkbox won't take up too much; value is relative to the other columns' fill values
this.dataGridView1.Columns.Add(checkColumn);
}
当我尝试向表中添加新行时出现问题
private void LoadFileButton_Click(object sender, EventArgs e)
{
string file = "";
DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
if (result == DialogResult.OK) // Test result.
{
file = openFileDialog1.FileName;
Console.WriteLine(file);
dataGridView1.Rows.Add(new object[] { "value 1", "value 2", "value 3", "value 4", true });
}
}
对 dataGridView1.Rows.Add() 方法的调用引发了异常。异常的描述是:“至少有一列没有任何单元格的模型”
我真的不明白我做错了什么。希望一些ine可以帮助我。提前致谢。
【问题讨论】:
-
您的总列数是 6 而不是 5。 dataGridView1.Rows.Add(new object[] { "value 1", "value 2", "value 3", "value 4","Value5" , 真 });
-
我不明白你的评论。首先,我添加 0 到 3 列(tot = 4),然后添加最后一列 @AzarShaikh
-
我会构建一个 DataTable dt,然后使用 dataGridView1.DataSource = dt。构建数据表比构建具有所有设置的 DGV 容易得多。 DataSource 将自动负责正确初始化 DGV。
-
@jdweng 我没有任何数据源。我没有连接到任何其他数据库。我必须一个一个地设置单元格的值
标签: c# datagridview