Проблема цикла c# while
Всем привет,
Я работаю над проектом и пытаюсь решить ту же проблему за последние 2 недели !
Я принял, я не могу решить и нуждаюсь в некоторой помощи от вас.
В основном у меня есть datagrid и файл excel. У них разные ценности.
В excel у меня есть несколько столбцов, таких как" report_no_1 "или" report_no_1_1 " и т. д. Под этой колонной измерения придут от моего элемента управления DataGrid.
Моя datagrid в основном такая же, просто у меня есть 2 столбца : Report No и Measurement
Я отредактировал отчет no для получения только первого номера из строки. Итак, у меня есть 2 для report_no_2 или report_no_2_12
Пример Шаблона Excel :
Report_No_1 | Report_no_2_1 | Report_no_2_2 |Report_no_3 | и т. д.....
Шаблон элемента управления DataGrid :
2 | 21,3
2 | 22,4
3 | 12,1
5 | 11,1
и т.д.
Все очень просто. Я хочу получить первое число в строке из ячейки excel и сравнить его с моим номером datagrid для всех данных в datagrid. Если они равны, то нужно записать измерение в файл excel под отчетом no.
Я сравниваю их, потому что есть какое-то пустое пространство. Например, в datagrid нет значения 4. Так что мне нужно проверить.
Вот мой код. Если есть только одно пустое пространство ( например, в таблице данных нет значения 4, то мне нужно дать пустое пространство excel), это не работает с первого раза.
Когда я проверил, он кажется равным.И всего через одну строчку я пытаюсь написать excel. Он написал в предыдущей колонке.
Пожалуйста, помогите мне.
akademi - это мой первый индекс столбцов в excel.
int akademi = 5; raporBos++; int toplamStr = dataGridView1.Rows.Count; for (int i = 0; i < toplamStr-1; i++) { int nope = Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()); double olcumi = double.Parse(dataGridView1.Rows[i].Cells[1].Value.ToString()); int abc = 0; int cag; int gac; if (!String.IsNullOrEmpty(raporAralik.Cells[raporBasSatZ, akademi].Value)) { string[] cagF = (raporAralik.Cells[raporBasSatZ, akademi].Value.ToString().Substring(8)).Split('_'); cag = Int32.Parse(cagF[1]); gac = Int32.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()); Debug.WriteLine(gac + " gac || " + cag + " cag"); int osman = gac - cag; while (cag < gac) { Debug.WriteLine("*** "+gac + " gac || " + cag + " cag"); akademi++; if (!String.IsNullOrEmpty(raporAralik.Cells[raporBasSatZ, akademi].Value)) { string[] cagG = (raporAralik.Cells[raporBasSatZ, akademi].Value.ToString().Substring(8)).Split('_'); cag = Int32.Parse(cagG[1]); } abc++; if (abc == 100) { break; } } raporWrkS.Cells[raporBos, akademi] = Math.Round(olcumi, 3); akademi++; } else { break; } }
Что я уже пробовал:
в то время как петли, если заявления, для петли
Graeme_Grant
Было бы проще привязать коллекцию объектов к DataGrid и выполнять работу непосредственно с этой коллекцией...
kozmikadam
Я открыт для любых предложений. Но не мог понять, что ты имеешь в виду. Можете ли вы показать образец ?
Graeme_Grant
Пользовательский интерфейс (user interface) - это окно просмотра данных для пользователя. Элемент управления DataGrid является просмотр/редактирование пользовательского интерфейса к данным. Вы пытаетесь сделать BL (бизнес-логику) на уровне пользовательского интерфейса.
Поэтому постройте модель данных, а затем привяжите к ней пользовательский интерфейс (DataGrid). Как только вы это сделаете, задача, которую вы хотите выполнить, будет простой и прямой.
См. пример этого ниже в решении 2...