我正在尝试使用从Excel导入的自定义列填充DataGridView。这应该很容易,但对于我的生活,我陷入了困境。我应该能够选择特定的列(工作),将列标题发送到我的excel类来解析该列中的数据(工作),将解析的数据发送到List(工作),然后将数据导入datagridview通过将我的DataSource设置为我的列表(我正在创建列标题文本,但代码正在创建一个名为Value的列并将数据添加到其中)。这是我的代码创建问题:
private void btnCreateTable_Click(object sender, EventArgs e)
{
List<StringValue>[] listArr = new List<StringValue>[columnCount];
ExcelClass getData = new ExcelClass();
tabControl1.SelectedTab = tabDataTable;
dgv.Visible = true;
DataGridViewTextBoxColumn t = new DataGridViewTextBoxColumn();
//dgvSelectedHeaders.Columns[i].Name = selectedHeaders[i];
for (int i = 0; i < columnCount; i++)
{
//dgv[i].DataSource = getData.GetDataFromExcel(headersArr[i], path);
listArr[i] = getData.GetDataFromExcel(selectedHeaders[i], path);
t.Name = selectedHeaders[i];
t.HeaderText = selectedHeaders[i];
dgv.Columns.Add(t);
dgv.DataMember = "String";
dgv.DataSource = listArr[i];
for (int j = 0; j < getData.RowCount; j++)
{
dgv.Rows.Add();
for (int k = 0; k < getData.RowCount; k++)
{
dgv[k, j].Value = listArr[j][k].ToString();
}
}
}
Problem Image http://img820.imageshack.us/img820/4156/dgvimage.png
如果我选择了多个列,它会显示第一个列,但是在第dgv.Columns.Add(t)行的第一个列之后出现错误; ... InvalidOperationException,提供的列已经属于DataGridView控件...我知道这些是两个问题,但我认为它们是以某种方式捆绑在一起的。
提前致谢,如果您需要更多代码,请与我们联系。
答案 0 :(得分:0)
我认为你需要为每个列创建一个新的DataGridViewColoumn
for (int i = 0; i < columnCount; i++)
{
DataGridViewTextBoxColumn t = new DataGridViewTextBoxColumn();
// ...
dgv.Columns.Add(t);
}
而不是重复使用它。