Boopalslm Ответов: 1

Представление таблицы данных задача вычисления значений ячеек


Я создаю приложение windows с помощью c# 2010, в моем приложении я использую datagridview для выставления счетов, здесь мой вид сетки имеет 6 ячеек.

Я ввожу значения ячеек первого раза на 2-й и 3-й ячейках, которые вычисляют значения ячеек времени, показанные на 5-й ячейке. Это правильно,

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

Как решить эту ошибку. Любое одно дать мне идеи.

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

Представление Таблицы данных задача вычисления значений ячеек

[Редактировать код OP из комментариев]
Это мой код

foreach (DataGridViewRow row in dataGridView1.Rows)
{
   if (row.Cells[4].Value != DBNull.Value && row.Cells[6].Value != DBNull.Value)
   {
      float iWei = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());

      float iPer = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());

      dataGridView1.Rows[e.RowIndex].Cells[5].Value = (iWei * iPer) / 100;
   }
   else
   {
      float iWei = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());

      float iPer = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());

      float iWas = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString());

      dataGridView1.Rows[e.RowIndex].Cells[6].Value = (iPer + iWas) * iWei;
   }
}
}

CHill60

Вам действительно придется показать нам код, который выполняет вычисления!
Помните, что мы не можем видеть ваш экран, исследовать ваш жесткий диск или читать ваши мысли.

Boopalslm

это мой код

по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
если (строки.Клеток[4].Значение != Значение dbnull.Значение& & amp; строка.Ячейки[6]. Значение != DBNull.Ценность)
{
float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());


dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = (iWei * iPer) / 100;


}


ещё
{


float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());

поплавок радостно = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[4].Значение.Метод toString());



dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[6]. значение = (iPer + iWas) * iWei;

}
}
}

CHill60

Если бы вы использовали Улучшить вопрос ссылка Вам бы не пришлось выкладывать код 3 раза! Решает ли решение 1 вашу проблему?

Cristina Carrasco Angulo

Не могли бы вы показать код, пожалуйста?

Boopalslm

это мой код


по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
если (строки.Клеток[4].Значение != Значение dbnull.Значение& & amp; строка.Ячейки[6]. Значение != DBNull.Ценность)
{
float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());


dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = (iWei * iPer) / 100;


}


ещё
{


float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());

поплавок радостно = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[4].Значение.Метод toString());



dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[6]. значение = (iPer + iWas) * iWei;

}
}
}

Awesh Vishwakarma

Опубликуйте фрагмент своего кода, если вам действительно нужна помощь...

Boopalslm

это мой код


по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{
если (строки.Клеток[4].Значение != Значение dbnull.Значение& & amp; строка.Ячейки[6]. Значение != DBNull.Ценность)
{
float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());


dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = (iWei * iPer) / 100;


}


ещё
{


float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());

поплавок радостно = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[4].Значение.Метод toString());



dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[6]. значение = (iPer + iWas) * iWei;

}
}
}

Awesh Vishwakarma

Итак, вы хотите показать результат расчета в 5-й ячейке, когда вводите значения во 2-ю и 3-ю ячейки.
и если вы вводите значения во 2-ю, 3-ю и 4-ю ячейку, вы хотите показать результат расчета только в 6-й ячейке, а не в 5-й.

Я прав?

1 Ответов

Рейтинг:
0

Awesh Vishwakarma

Итак, вы хотите показать результат расчета в 5-й ячейке, когда вводите значения во 2-ю и 3-ю ячейки.
и если вы вводите значения во 2-ю, 3-ю и 4-ю ячейку, вы хотите показать результат расчета только в 6-й ячейке, а не в 5-й.

Я прав?
Если это то, что вы хотите, то попробуйте этот код...

foreach (DataGridViewRow row in dataGridView1.Rows)
        {
            if (row.Cells[2].Value != DBNull.Value && row.Cells[3].Value != DBNull.Value)
            {
                if(row.Cells[4].Value ==DBNull.Value)
                {
                    float iWei = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());
                    float iPer = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());
                    dataGridView1.Rows[e.RowIndex].Cells[5].Value = (iWei * iPer) / 100;
                    dataGridView1.Rows[e.RowIndex].Cells[6].Value = null;//you can remove it if not needed
                }
                else
                {
                    float iWei = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());
                    float iPer = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());
                    float iWas = float.Parse(dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString());
                    dataGridView1.Rows[e.RowIndex].Cells[6].Value = (iPer + iWas) * iWei;
                    dataGridView1.Rows[e.RowIndex].Cells[5].Value = null;//you can remove it if not needed
                }
            }
        }



Дайте мне знать, если это решит вашу проблему...
Счастливое кодирование :)


Boopalslm

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

Boopalslm

я ставлю точку останова в foreach, но сценарий не может перейти внутрь, если условие переходит на другую часть.

CHill60

Что означает этот ряд.Ячейки[4]. значение не равно DBNull.Ценность

Boopalslm

не за психически нуль несколько раз введите значения в ячейки 4

CHill60

Как я уже сказал - это не null, поэтому код будет перетекать в блок else оператора

Boopalslm

да, если код условия 4 ячейки равен нулю, но результат не может быть показан на 5-й ячейке,

Boopalslm

если (строки.Клеток[2].Значение != Значение dbnull.Значение& & amp; строка.Ячейки[3]. Значение != DBNull.Ценность)
{

если (строки.Клеток[4].Значение == Значение Dbnull.Ценность)
{
float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());
поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());
dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = (iWei * iPer) / 100;
dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[6]. Value = null;//вы можете удалить его, если это не нужно
}

выше код правильный, но в 4-й ячейке пусто, что время не может показать вычисление значений в 5-й ячейке

это моя проблема.

CHill60

Вы сказали, что поток переходит к другой части, поэтому это значение не равно null, поэтому вы установите ячейки[5] в null и ячейки[6]в значение.

Примечание ячейки[5] - это 6-й клетка, 5-й ячейке значение имеет ...
Коллекции являются базовыми 0
Ячейки[0] - первая ячейка
Ячейки[1] - вторая ячейка
Клетки[2] - 3-я клетка и т. д.

Boopalslm

сэр еще часть работает отлично, проблема в состоянии if

Boopalslm

теперь у меня есть решение, это мой код, работающий хорошо.

пробовать
{

по каждому элементу (ячейки datagridviewrow строку в dataGridView1.Строк)
{

if (String.IsNullOrEmpty(dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[4]. значение в виде строки))

{
float iWei = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString());

поплавок ИПР = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString());


dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = (iWei * iPer) / 100;


}

остальное, если (строки.Клеток[4].Значение != нуль)
{

dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[5]. Значение = " 0";

float iWeis = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[2].Значение.Метод toString
());

поплавок змпэ = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[3].Значение.Метод toString
());

float iWass = поплавок.Синтаксический анализ(dataGridView1.Ряды[электронный.Параметр rowindex].Клеток[4].Значение.Метод toString
());



dataGridView1.Ряды[электронный.Параметр rowindex].Ячейки[6]. значение = (iPers + iWass) * iWeis;


}
}
}
catch (исключение)
{
}

Boopalslm

но у меня есть еще одна проблема

после того, как я сохранил значения представления сетки данных в базе данных, я снова связываю значения сетки и вставляю в новую строку, но расчет представления сетки данных работает неправильно, первый раз работа хороша, после того, как я сохранил и извлек и вставил новую проблему расчета строки, и я пишу код CellEndEdit – Events.