none
Почему могут пропускаться строчки в DataGridView RRS feed

  • Вопрос

  • По какой причине могут пропускаться строчки через одну в DataGridView? Данные туда записываются из файла txt! Яязык C#(Form)!
    17 сентября 2013 г. 8:13

Ответы

  • Yatajga как и остальные помогающие на этом форуме, делают это в свободное от работы время на общественных началах. Как будет возможность, он постарается помочь. А пока, удалите вот это фрагмент кода и у вас будут все строчки:

    {
        line = Table.ReadLine();
    }

    18 сентября 2013 г. 10:52
    Отвечающий
  • Насколько я понял, проблема решилась?

    Ну а почему так, так ведь вы из файла считывали в цикле две строки. Одну в указанном месте, а вторую непосредственно в for:

    for (string line = Table.ReadLine(); line != null; line = Table.ReadLine())

    Анализировалась только та строка, которая считывалась в for.

    Если позволите, совет. Когда вы точно знаете сколько раз выполниться цикл (5, 100 или N), то используйте цикл for, если вы не знаете сколько раз выполниться тело цикла (например чтение из файла, из сети и т.д.) то лучше использовать цикл while. В этом случае вы сократите количество таких вот ошибок.

    • Предложено в качестве ответа YatajgaEditor 18 сентября 2013 г. 12:16
    • Помечено в качестве ответа YatajgaEditor 19 сентября 2013 г. 6:09
    18 сентября 2013 г. 11:23
    Отвечающий

Все ответы

  • Возможно они не заносятся в источник данных (DataSource), при чтении. Проверьте в отладчике, просмотрите DataSource.

    Сделаем содержимое сообщества лучше, вместе!

    17 сентября 2013 г. 8:16
    Модератор
  • То-есть вы хотите. сказать, что файл может содержать. больше строк, чем я задал статически?
    17 сентября 2013 г. 8:24
  • Не совсем. Просто они читаются не так, как вы бы хотели. Т.е. строка по той или иной причине пропускается или не считается за строку. Если приведёте пример файла и код который читает, постараюсь подсказать больше.

    Сделаем содержимое сообщества лучше, вместе!

    17 сентября 2013 г. 8:29
    Модератор
  • страно, вроде все строчки одинаковые!
    17 сентября 2013 г. 8:54
  • Чтобы не гадать, лучше посмотреть код чтения и пример текста файла.

    Сделаем содержимое сообщества лучше, вместе!

    17 сентября 2013 г. 8:56
    Модератор
  • public class Table { public string nomerparam { get; set; } public string name { get; set; } public string oboznach { get; set; } public string fizznach { get; set; } public string kod { get; set; } public string smeshenie { get; set; } } private string[] Split2(string s) { int i= 0; bool flag = true; string[] arr = new string[26]; foreach (char c in s.Trim().ToCharArray()) { if (c != ' ') { arr[i] += c; flag = true; } else { if (flag == true) flag = false; else if (arr[i] != null) i++; } } return arr; } private void button3_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { Name = openFileDialog1.FileName; StreamReader Table = new StreamReader(Name, Encoding.GetEncoding(866)); List<Table> Tables = new List<Table>(); string[] arr = null; for (string line = Table.ReadLine(); line != null; line = Table.ReadLine()) { arr = Split2(line); if (arr.Length > 6 && arr[1] != null && arr[2] != null && arr[3] != null) { Table table = new Table(); table.nomerparam = arr[0].Trim(); table.name = arr[1].Trim(); table.oboznach = arr[2].Trim(); table.fizznach = arr[3].Trim(); table.kod = arr[4].Trim(); table.smeshenie = arr[5].Trim(); Tables.Add(table); } { line = Table.ReadLine(); } } dataGridView1.DataSource = Tables; int i = 0; foreach (Table t in Tables) { if (i < textBox2.Lines.Length) { t.fizznach = textBox2.Lines[i]; t.kod = textBox3.Lines[i]; t.smeshenie = textBox6.Lines[i]; i++; } } /* table.fizznach = textBox2.Text; table.kod = textBox3.Text; table.smeshenie = textBox6.Text;*/ } } } }

    3.1           Общее                 N                   5                   0005      0000                                      
    3.2           Время                   T               4.5950000000E+0004  001565AB  0002                                             
    3.3           Время                   T                1.7000000000E+0004  0007EA8F  0006                                            
    3.4           Время                   T                  4.5950000000E+0004  001565AB  000A                                           
    3.5           Количество          N                     0                   0000      000E                                            
    3.6           Время                Tи               5.0000000000E+0004  00174877  0010                                             

    Сщитывается через одну строчку 3.1; 3.3., пропуская 3.2!

    А сверху еще не нужная шапка документа!


    • Изменено georgushek 17 сентября 2013 г. 19:30
    17 сентября 2013 г. 19:29
  • Доброе утро! Вы обещали мне помочь Yatajga.
    18 сентября 2013 г. 6:21
  • Я все что вы просили выложил!
    18 сентября 2013 г. 10:16
  • Yatajga как и остальные помогающие на этом форуме, делают это в свободное от работы время на общественных началах. Как будет возможность, он постарается помочь. А пока, удалите вот это фрагмент кода и у вас будут все строчки:

    {
        line = Table.ReadLine();
    }

    18 сентября 2013 г. 10:52
    Отвечающий
  • Yatajga как и остальные помогающие на этом форуме, делают это в свободное от работы время на общественных началах. Как будет возможность, он постарается помочь. А пока, удалите вот это фрагмент кода и у вас будут все строчки:

    {
        line = Table.ReadLine();
    }


    А почему это так?
    18 сентября 2013 г. 11:19
  • Насколько я понял, проблема решилась?

    Ну а почему так, так ведь вы из файла считывали в цикле две строки. Одну в указанном месте, а вторую непосредственно в for:

    for (string line = Table.ReadLine(); line != null; line = Table.ReadLine())

    Анализировалась только та строка, которая считывалась в for.

    Если позволите, совет. Когда вы точно знаете сколько раз выполниться цикл (5, 100 или N), то используйте цикл for, если вы не знаете сколько раз выполниться тело цикла (например чтение из файла, из сети и т.д.) то лучше использовать цикл while. В этом случае вы сократите количество таких вот ошибок.

    • Предложено в качестве ответа YatajgaEditor 18 сентября 2013 г. 12:16
    • Помечено в качестве ответа YatajgaEditor 19 сентября 2013 г. 6:09
    18 сентября 2013 г. 11:23
    Отвечающий
  • спасибо! Я понял!
    18 сентября 2013 г. 11:38
  • Как отметил уже Алексей не всегда бывает время вовремя ответить, работа. Надеюсь проблема решилась.

    Сделаем содержимое сообщества лучше, вместе!

    18 сентября 2013 г. 12:17
    Модератор
  • Да, огромное спасибо!
    18 сентября 2013 г. 18:03