Как мне сделать так, чтобы мои данные отображались в правильном столбце DataGridView? - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь заполнить свой DataGridView пользовательскими столбцами, импортированными из Excel.Это должно быть легко, но на всю жизнь я застрял в тупике.Я должен иметь возможность выбрать определенные столбцы (работает), отправить заголовки столбцов в мой класс Excel, чтобы проанализировать данные из этого столбца (работает), отправить проанализированные данные в список (работает), а затем импортировать данные в представление данныхустановив мой 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();
                }
            }

        }

Изображение проблемы http://img820.imageshack.us/img820/4156/dgvimage.png

Если я выберу более одного столбца, он покажет первый, но я получаю сообщение об ошибке послепервый в строке dgv.Columns.Add (t);... InvalidOperationException, при условии, что столбец уже принадлежит элементу управления DataGridView ... Я знаю, что это два вопроса, но я думаю, что они как-то связаны между собой.

Заранее спасибо, и если вам нужно больше кода, дайтея знаю.

1 Ответ

0 голосов
/ 30 августа 2011

Я думаю, вам нужно создать новый DataGridViewColoumn для каждого столбца

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

вместо повторного использования.

...