Почему у меня уже есть заголовок столбца в Datagrid? - PullRequest
1 голос
/ 13 июня 2019

У меня есть DataGrid с некоторыми «старыми» столбцами из последнего мониторинга, теперь, когда я запускаю новый мониторинг, я наблюдаю, сколько столбцов мне нужно в следующий раз, и создаю или удаляю столбцы.

Вот синтаксис

if (anzAlteVar < anzNeueVar)
{
    DataGridTextColumn textColumn = new DataGridTextColumn();
    int zahler = 1;
    string szahler;

    for (int j = 0; j <= dgTable3.Columns.Count - 1; j++)
    {
        szahler = zahler.ToString();
        dgTable3.Columns[j].Header = szahler;
        zahler++;
    }

    while (dgTable3.Columns.Count() != anzNeueVar)
    {
        szahler = zahler.ToString();
        textColumn.Header = szahler;
        dgTable3.Columns.Add(textColumn);
        zahler++;
    }
}

//übernimmt die neuen Header in das Datagrid
for (int i = 0; i <= dgTable3.Columns.Count-1; i++)
{
    dgTable3.Columns[i].Header = inhaltVar[i, 0];
}

Моя проблема в строке dgTable3.Columns.Add(textColumn); при втором проходе цикла я получаю ошибку

System.ArgumentException

потому что у меня есть два столбца с одинаковым именем.

Мой вопрос: как это возможно, что у меня дважды одно и то же имя? Я имею в виду, что я изменяю заголовок каждый раз, когда он проходит цикл, и добавляю их после того, как дается новое имя. Я смотрел его в Отладчике, и на них у меня каждый заголовок только один раз, пожалуйста, помогите мне и напишите, что я сделал неправильно и что я должен изменить.

Дружеские пожелания сниффи

Ответы [ 2 ]

2 голосов
/ 13 июня 2019

Создать новый столбец в цикле не снаружи.DataGridTextColumn textColumn = new DataGridTextColumn();.

В вашем случае он ссылается на тот же столбец и поэтому возвращает ошибку.

while (dgTable3.Columns.Count() != anzNeueVar)
{
    szahler = zahler.ToString();

    DataGridTextColumn textColumn = new DataGridTextColumn();
    textColumn.Header = szahler;

    dgTable3.Columns.Add(textColumn);
    zahler++;
}
2 голосов
/ 13 июня 2019

Вы определяете textColumn вне цикла. Таким образом, вы получаете доступ к одному и тому же столбцу в каждой итерации циклов.
Когда вы пытаетесь добавить столбец с dgTable3.Columns.Add(textColumn); во второй раз, столбец уже добавлен, и вы пытаетесь добавить один и тот же столбец дважды, поэтому возникает ошибка, что два столбца имеют одно и то же имя. (Ошибка должна скорее сказать, что столбец уже является частью коллекции)

while (dgTable3.Columns.Count() != anzNeueVar)
{
    szahler = zahler.ToString();

    // Move the declaration here
    DataGridTextColumn textColumn = new DataGridTextColumn {Header = szahler};

    dgTable3.Columns.Add(textColumn);
    zahler++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...