繁体   English   中英

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

[英]How do I get my data to show in correct DataGridView column?

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

预先感谢您,如果您需要更多代码,请告诉我。

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

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

而不是重复使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM