【发布时间】:2011-08-30 16:14:56
【问题描述】:
我正在尝试使用从 Excel 导入的自定义列填充我的 DataGridView。这应该很容易,但对于我的生活,我陷入了脑锁。我应该能够选择特定的列(作品),将列标题发送到我的 excel 类以解析该列中的数据(作品),将解析的数据发送到列表(作品),然后将数据导入 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();
}
}
}
如果我选择多列,它会显示第一列,但在 dgv.Columns.Add(t) 行的第一列之后出现错误; ... InvalidOperationException,提供的列已经属于 DataGridView 控件...我知道这是两个问题,但我认为它们以某种方式联系在一起。
提前致谢,如果您需要更多代码,请告诉我。
【问题讨论】:
-
你确定 k-for-loop 和 j-for-loops 都是 getData.RowCount 吗?
标签: c# visual-studio-2010 excel datagridview generic-list