kiran kamble Ответов: 1

Как я могу сделать расчет в событии gridview rowdatabound


protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
            TextBox txtRate = (TextBox)e.FindControl("txtRate");
            TextBox txtQuantity = (TextBox)e.FindControl("txtQuantity");
            TextBox txtTotal = (TextBox)e.FindControl("txtTotal");
            int R = int.Parse(txtRate.Text);
            int Q = int.Parse(txtQuantity.Text);
            int T = int.Parse(txtTotal.Text);
 
            T = Convert.ToInt32(R * Q);
            txtTotal.Text = T.ToString();
    }
}


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

привет друзья, я пытался сделать расчет, но его выбрасывание исключения nullreference, после обработки исключения он будет скрывать часть расчета,

"-----T = Convert.ToInt32(R * Q);
      txtTotal.Text = T.ToString();---"


это не расчет, пожалуйста, помогите мне. чтобы выполнить эту задачу.

kiran kamble

его ответ не отображается в следующей колонке.

1 Ответов

Рейтинг:
0

Vincent Maverick Durano

Ошибка просто означает, что ваш код не в состоянии найти элемент управления, который вы искали. Воспользуйся e.Row.FindControl() вместо этого метод. Например:

TextBox txtRate = (TextBox)e.Row.FindControl("txtRate");


Если вы знаете точное местоположение ячейки элемента управления, то, возможно, вам захочется сослаться на Cells тоже нравится:

TextBox txtRate = (TextBox)e.Row.Cells[0].FindControl("txtRate");


Обратите внимание, что индекс ячеек начинается с нуля. В приведенном выше примере он обращается к TextBox txtRate из первого столбца вашего GridView.

Вот обновленный код:

int R,Q,T = 0;
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
  
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            TextBox txtRate = (TextBox)e.Row.FindControl("txtRate");
            TextBox txtQuantity = (TextBox)e.Row.FindControl("txtQuantity");
            TextBox txtTotal = (TextBox)e.Row.FindControl("txtTotal");
            R = int.Parse(txtRate.Text);
            Q = int.Parse(txtQuantity.Text);

            T += Convert.ToInt32(R * Q);
            txtTotal.Text = T.ToString();
        }
 }


Здесь нужно отметить несколько вещей:
Убедитесь в том, чтобы подтвердить свой TextBox разрешить только числовые входы, иначе ваш синтаксический анализ потерпит неудачу. Возможно, вы захотите взглянуть на TryParse() вместо этого метод. Возможно, вы захотите рассмотреть возможность использования double вместо int тоже.

Кроме того, если вам нужен текущий итог при вводе строк, то взгляните на эту статью Для справки: Как сделать вычисления в GridView[^]


kiran kamble

да я уже сделал это тоже но это не может быть вычислением значений
TextBox txtRate = (TextBox)e. Row.FindControl("txtRate");

Vincent Maverick Durano

Вам нужно объявить переменные int вне события RowDataBound, чтобы оно не сбрасывалось на каждой итерации. Пожалуйста, взгляните на обновленное решение выше.

kiran kamble

но его показ FormatException был необработан пользовательским кодом, а входная строка не была в формате coorect, и сэр этот расчет не работает во время выполнения, потому что таблица базы данных пуста, и я хочу ввести число во время выполнения, если я ввожу количество "1" и скорость "200" , то я нажимаю вкладку, которую я хочу получить в следующем столбце.

Vincent Maverick Durano

Вам нужно отладить свой код. Установите точку останова и шагните в нее, чтобы понять, что происходит.

Кроме того, если вам нужен текущий итог при вводе строк, то взгляните на эту статью Для справки:

http://www.codeproject.com/Articles/1112018/How-To-Do-Calculations-in-GridView

kiran kamble

если данные есть в базе данных, то их вычисление, но здесь я делаю расчет времени выполнения, сэр, вы можете дать мне ur EMAIL, я отправлю вам этот файл, или это моя электронная почта ( kirankamble98@gmail.com ) плз помогите мне с заданием.

Vincent Maverick Durano

Я здесь не для того, чтобы исправить ваш код. Я здесь только для того, чтобы помочь вам направить вас на правильный путь. Если вы ищете кого-то, кто исправит ваш код, то вам следует заплатить кому-то или нанять внештатного разработчика.

Опять же, если вы выполняете расчет времени выполнения, то ссылка, которую я предоставил, должна помочь вам начать работу. Также знайте основы отладки. Это очень важно знать, если вы "истинный" разработчик.