如何让我的数据显示在正确的DataGridView列中?

时间:2011-08-30 16:14:57

标签: c# visual-studio-2010 excel datagridview generic-list

我正在尝试使用从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控件...我知道这些是两个问题,但我认为它们是以某种方式捆绑在一起的。

提前致谢,如果您需要更多代码,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我认为你需要为每个列创建一个新的DataGridViewColoumn

for (int i = 0; i < columnCount; i++) 
{
    DataGridViewTextBoxColumn t = new DataGridViewTextBoxColumn(); 
    // ...
    dgv.Columns.Add(t);
}

而不是重复使用它。