GTR0123 Ответов: 1

Разделите строку и примите во внимание проблемы datagridview


у меня есть строка, и я разделяю эту строку с помощью этого кода :
split = ast.Split(new Char[] { '!' });

после этого я делаю DataTable
DataTable table = new DataTable();

DataGridViewRow addRow = new DataGridViewRow();

int columnCount = 27;
                    for (int i = 1; i <= columnCount; i++)
                    {
                        DataColumn col = new DataColumn("col" + i);
                        table.Columns.Add(col);
                    }

DataRow row = table.NewRow();

после этого я хочу, чтобы эта разделенная строка была взята в ячейки, и я использую код, который я пытаюсь, но есть 1 проблема, моя длина строки может быть 27 или 27+27 моя длина строки растет с постоянным числом 27 soo у меня есть столбцы 27, но если мой код (то, что я попробовал) видит, что длина больше 27, это ошибка.
Additional information: Cannot find column 27.

пожалуйста, помогите мне сделать это

Что я уже пробовал:

                         for (int i = 0; i <= split.length; i++)
                         {

                             row[i] = split[i];
                         }
                         
                         table.Rows.Add(row);
  

                      
}
                     this.dataGridView1.DataSource = table;

1 Ответов

Рейтинг:
1

OriginalGriff

Первое, что нужно сделать, это посмотреть, есть ли там еще один разделитель: похоже, у вас есть 27 элементов, разделенных"!", затем второй набор, также разделенный"!", затем третий.
При таких обстоятельствах было бы нормально иметь второй разделитель для разграничения каждого набора:

1A!1B!...!1Z!1ZA|2A!2B!...
(часто это новая строка, чтобы сделать ее по-человечески читаемой.) Поэтому начните с просмотра ваших данных и проверки этого. Если вы это сделаете, то все просто: разлейте его в каждую строку через второй разделитель, затем разделите каждую строку и добавьте это:
string[] rows = ast.Split('|');
foreach (string row in rows)
   {
   string cells = row.Split('!');
   // Add cells to a new row here.
   }


GTR0123

проблема в том, что нет другого разделителя, например, строка выглядит так
1!2!3!
4!5!6!
я хочу это 1 2 3 перейти на 1 клетку
и 4 5 6 на другой продают но там может быть больше 2 рядов

sameer549

дайте свою точную входную строку.. содержит ли он несколько строк, как вы указали выше?

GTR0123

Глоток/1000-0000005f!from_cdn!2000!1!Вверх!Циферблат!Глоток/2000!1000!!!3!9!Глоток/2000-00000060!1492821337.95
Глоток/1000-0000005d!from_cdn!3000!1!Вверх!Циферблат!Глоток/3000!1000!!!3!18!Глоток/3000-0000005e!1492821329.93
если эта строка идет я имею в виду длину она делает хорошо все
но
Глоток/1000-0000005f!from_cdn!2000!1!Вверх!Циферблат!Глоток/2000!1000!!!3!9!Глоток/2000-00000060!1492821337.95
Глоток/1000-0000005d!from_cdn!3000!1!Вверх!Циферблат!Глоток/3000!1000!!!3!18!Глоток/3000-0000005e!1492821329.93
Глоток/1000-0000005f!from_cdn!2000!1!Вверх!Циферблат!Глоток/2000!1000!!!3!9!Глоток/2000-00000060!1492821337.95
Глоток/1000-0000005d!from_cdn!3000!1!Вверх!Циферблат!Глоток/3000!1000!!!3!18!Глоток/3000-0000005e!1492821329.93
когда это в два раза больше, это заблуждение меня, что

OriginalGriff

Эти данные разбиты на" естественные " длины: вы даже разместили их на отдельных линиях.
Для меня это похоже на данные журнала PABX, и я подозреваю, что они находятся в очень специфическом формате, вероятно, в тех строках, на которые вы их разбили.
Возьмите свои необработанные данные снова и используйте шестнадцатеричный редактор, чтобы внимательно посмотреть на них: я подозреваю, что каждая строка заканчивается символом #0D или #0A (CR или LF ASCII-символы), и вы должны это наблюдать.