Member 13044689 Ответов: 1

Устранение неполадок исключения: system.nullreferenceexception


Здравствуйте, у меня есть таблица со многими col, 4 из этих col будут иметь числовое значение для вычисления и получения общей суммы, а также иметь оператор edit в gridview, когда я нажимаю edit для редактирования некоторого числа

эта ошибка появится
Troubleshooting Exceptions: System.NullReferenceException


Примечание: - Я думаю, что это из-за значения float, потому что, когда я попытался удалить эти 4 col с числовым значением, его работа gd


Спасибо....

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

<pre><pre> protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            string val1 = e.Row.Cells[16].Text; //Gets the value in Column 1
            string val2 = e.Row.Cells[15].Text; //Gets the value in Column 2
            string val3 = e.Row.Cells[14].Text; //Gets the value in Column 3
            string val4 = e.Row.Cells[13].Text; //Gets the value in Column 4
            Label lblTotal = (Label)e.Row.Cells[12].FindControl("Label1"); //
            float _val1, _val2, _val3, _val4;

            float.TryParse(val1, out _val1);
            float.TryParse(val2, out _val2);
            float.TryParse(val3, out _val3);
            float.TryParse(val4, out _val4);

            float sum = _val1 + _val2 + _val3 + _val4;

          
            lblTotal.Text += sum.ToString();   -------------------> the error is here 
            

        }

1 Ответов

Рейтинг:
7

OriginalGriff

Это одна из самых распространенных проблем, которые нам задают, и это также та, на которую мы меньше всего готовы ответить, но вы больше всего готовы ответить сами.

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, в котором вы держите ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень забавный вид, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего, что обычно делали бы, когда извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и Visual Studio поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, VS покажет вам строку, на которой она обнаружила проблему. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы выяснить, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать! На первый взгляд, FindControl терпит неудачу - но это до вас, чтобы выяснить, почему он не может найти элемент управления!


Member 13044689

я знаю что такое contain null но idk синтаксис потому что я новичок в этом вы можете дать мне подсказку как это сделать сэр

OriginalGriff

Это не случай синтаксиса - это то, что вам нужно выяснить, почему он равен нулю, - и вы можете сделать это, только посмотрев на код во время его работы и выяснив, на что именно он смотрит. И мы не можем этого сделать, потому что мы не можем запустить ваш код при тех же обстоятельствах - у нас нет никакого доступа к данным, которыми вы заполнили GridView, или мы не знаем, что вы сделали, чтобы добраться до этой точки!
Поэтому вам нужно использовать отладчик и выяснить это - потому что мы не можем сделать это за вас.

Member 13044689

спасибо но хотя бы с чего то начать

OriginalGriff

Серьезно: мы не можем.
Вы просите меня починить вашу машину, а я даже не знаю, где она, какой марки или модели, и не имею ни малейшего представления, что с ней не так, - когда я нахожусь на другом континенте! :смеяться:
И когда все, что я могу сделать, это прочитать точно то, что вы печатаете, и ничего больше, я даже не могу сказать, "какого цвета машина"!
То же самое и с вашим приложением: данные в вашем Gridview почти наверняка имеют отношение к проблеме - и я не могу смотреть на это, потому что "ваша машина" "заперта в гараже", и я даже не знаю, в каком городе находится гараж!

Попробуйте отладчик-google объяснит, как это сделать с помощью простого поиска - и посмотрите, что вы можете узнать, потому что вы единственный, кто имеет доступ к вашему коду и данным во время работы вашего приложения!

Member 13044689

спасибо тебе

OriginalGriff

Пожалуйста!
Дайте нам знать, что вы узнаете...