How Can Fixed This Error When return null
This is the relevant code part:
private void DgvIncome_MouseClick(object sender, MouseEventArgs e)
{
//try
{
txtCode.Text = dgvIncome.SelectedRows[0].Cells[1].Value.ToString();
txtRecNo.Text = dgvIncome.SelectedRows[0].Cells[2].Value.ToString();
txtMembershipID.Text = dgvIncome.SelectedRows[0].Cells[3].Value.ToString();
txtGustName.Text = dgvIncome.SelectedRows[0].Cells[4].Value.ToString();
txtGustMobile.Text = dgvIncome.SelectedRows[0].Cells[5].Value.ToString();
txtNote.Text = dgvIncome.SelectedRows[0].Cells[6].Value.ToString();
txtSalesNo.Text = dgvIncome.SelectedRows[0].Cells[7].Value.ToString();
txtMainPackageNo.Text = dgvIncome.SelectedRows[0].Cells[8].Value.ToString();
txtSubPackageNo.Text = dgvIncome.SelectedRows[0].Cells[9].Value.ToString();
txtPackageNo.Text = dgvIncome.SelectedRows[0].Cells[10].Value.ToString();
txtNatPrice.Text = dgvIncome.SelectedRows[0].Cells[11].Value.ToString();
txtDiscount.Text = dgvIncome.SelectedRows[0].Cells[12].Value.ToString();
dtpStartDate.Text = dgvIncome.SelectedRows[0].Cells[13].Value.ToString();
dtpEndDate.Text = dgvIncome.SelectedRows[0].Cells[14].Value.ToString();
ShowSalesName();
ShowMainPackageName();
ShowSubPackageName();
ShowPackageName();
ShowPrice();
chbxSearch.Checked = false;
}
Error: When select a row, there are empty values ,
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Windows.Forms.DataGridViewCell.Value.get returned null.
8 / 8 / 2 Регистрация: 30.01.2015 Сообщений: 157 |
|
1 |
|
20.05.2018, 17:59. Показов 5536. Ответов 3
System.Windows.Forms.DataGridViewCell.Value.get вернул null. dataGridView заполнен данными, но не могу выдернуть значение из ячейки.
__________________
0 |
546 / 477 / 315 Регистрация: 24.09.2013 Сообщений: 3,345 Записей в блоге: 1 |
|
20.05.2018, 21:44 |
2 |
К сожалению, Вы написали просто безграмотный код. Простейшая задача, имея правильный аналог,забыли указать
0 |
8 / 8 / 2 Регистрация: 30.01.2015 Сообщений: 157 |
|
21.05.2018, 20:50 [ТС] |
3 |
Напишите пример грамотного. Пока только слова. Добавлено через 24 минуты
0 |
zna926 546 / 477 / 315 Регистрация: 24.09.2013 Сообщений: 3,345 Записей в блоге: 1 |
||||
22.05.2018, 11:38 |
4 |
|||
System.Windows.Forms.DataGridViewCell.Value.get вернул null. Уважаемый Mudrec! Конечно, Вы правы. Написав даже 1 строчку этого сложнейшего кода, трудно было не ошибиться. Добавлено через 13 часов 30 минут
0 |
Здесь мне нужно избегать null из datagridview (winform)
private void SendUpdate()
{
if ((string)dataGridView1.SelectedRows[0].Cells[0].Value != string.Empty )
{
if (1 == dataGridView1.SelectedRows.Count)
{
int Id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
Update up = new Update();
up.AssignValue(Id);
up.textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
up.comboBox1.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
up.textBox2.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
up.textBox3.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
up.textBox4.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
up.textBox5.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
up.ShowDialog();
}
else
{
MessageBox.Show("Please Select the Single Data Which Required to Update");
}
}
else
{
MessageBox.Show("You Select the empty Row");
}
}
Я пробовал !=string.empty;, !=null;, ! = «»;
но ошибка не решена.
1 == dataGridView1.SelectedRows.Count это правда
Но
(string)dataGridView1.SelectedRows[0].Cells[0].Value имеет нулевое значение
Показать ошибку
System.NullReferenceException: ‘Object reference not set to an instance of an object.’
System.Windows.Forms.DataGridViewCell.Value.get returned null.
Как исправить эту ошибку при возврате null
Это соответствующая часть кода:
private void DgvIncome_MouseClick(object sender, MouseEventArgs e)
{
//try
{
txtCode.Text = dgvIncome.SelectedRows[0].Cells[1].Value.ToString();
txtRecNo.Text = dgvIncome.SelectedRows[0].Cells[2].Value.ToString();
txtMembershipID.Text = dgvIncome.SelectedRows[0].Cells[3].Value.ToString();
txtGustName.Text = dgvIncome.SelectedRows[0].Cells[4].Value.ToString();
txtGustMobile.Text = dgvIncome.SelectedRows[0].Cells[5].Value.ToString();
txtNote.Text = dgvIncome.SelectedRows[0].Cells[6].Value.ToString();
txtSalesNo.Text = dgvIncome.SelectedRows[0].Cells[7].Value.ToString();
txtMainPackageNo.Text = dgvIncome.SelectedRows[0].Cells[8].Value.ToString();
txtSubPackageNo.Text = dgvIncome.SelectedRows[0].Cells[9].Value.ToString();
txtPackageNo.Text = dgvIncome.SelectedRows[0].Cells[10].Value.ToString();
txtNatPrice.Text = dgvIncome.SelectedRows[0].Cells[11].Value.ToString();
txtDiscount.Text = dgvIncome.SelectedRows[0].Cells[12].Value.ToString();
dtpStartDate.Text = dgvIncome.SelectedRows[0].Cells[13].Value.ToString();
dtpEndDate.Text = dgvIncome.SelectedRows[0].Cells[14].Value.ToString();
ShowSalesName();
ShowMainPackageName();
ShowSubPackageName();
ShowPackageName();
ShowPrice();
chbxSearch.Checked = false;
}
Ошибка: при выборе строки есть пустые значения,
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Windows.Forms.DataGridViewCell.Value.get returned null.
1 ответ
Лучший ответ
Зависит от того, что вы хотите сделать, если значение ячейки равно нулю. Самый простой способ справиться с этим — использовать? оператор вроде этого:
txtCode.Text = dgvIncome.SelectedRows[0].Cells[1].Value?.ToString();
Это приведет к присвоению null свойству Text текстовых полей в случае, если значение ячейки равно null, что, вероятно, именно то, что вам нужно.
См. https://csharp.today/c -6-features-null-условные-и-и-нулевые-объединяющие-операторы/
6
StefanFFM
2 Ноя 2019 в 17:29
Есть дгв2, в котором находятся чекбоксы. По какой то причине, при попытке получить значение ячейки, я получаю ошибку.
Допустим, хочу посмотреть в содержимое ячейки вот так
private void Import_DoubleClick(object sender, EventArgs e)
{
MessageBox.Show(dataGridView2.Rows[0].Cells[0].Value.ToString());
}
Получаю ошибку
System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
System.Windows.Forms.DataGridViewCell.Value.get вернул null.
Юмор в том, что есть код, который обращается к дгв2 точно так же, и никаких проблем, работает всегда.
В нем я сохраняю дгв2 в бд.
private void button5_Click(object sender, EventArgs e)
{
string src = "0", upd = "0";
if (radioButton1.Checked) src = "1";
if (checkBox1.Checked) upd = "1";
MySql.command($"UPDATE import SET link = '{MySql.escape(textBox2.Text)}', isupdate = '{upd}', source = '{src}', type = '{MySql.escape(comboBox1.Text)}', sklad = '{MySql.escape(comboBox2.Text)}', skip = '{textBox1.Text}', group_id = '{textBox3.Text}' WHERE name = '{MySql.escape(name)}'");
MySql.command($"DELETE FROM import_ WHERE import_name = '{MySql.escape(name)}'");
for (int i = 0; i < dataGridView3.Columns.Count; i++)
{
string combobox = "----------";
if (dataGridView3.Rows[0].Cells[i].Value as string != null) combobox = dataGridView3.Rows[0].Cells[i].Value.ToString();
MySql.command($"INSERT INTO import_ (columnindex, import_name, comboBox, checkBox) VALUES ('{i}','{MySql.escape(name)}','{MySql.escape(combobox)}','{dataGridView2.Rows[0].Cells[i].Value}')");
}
MessageBox.Show("Сохранено");
}
Приведу еще код, который создает и заполняет все дгв.
private void loadGridsInfo()
{
var dt = MySql.getTable($"SELECT columnindex, comboBox, checkBox FROM import_ WHERE import_name = '{name}'");
dt = dt.AsEnumerable().OrderBy(n => int.Parse(n[0].ToString())).CopyToDataTable();
int count = dt.Rows.Count;
int min;
if (dataGridView1.Columns.Count < count) min = dataGridView1.Columns.Count;
else min = count;
for (int i = 0; i < min ; i++)
{
if (dt.Rows[i][2].ToString() == "True") dataGridView2.Rows[0].Cells[i].Value = true;
dataGridView3.Rows[0].Cells[i].Value = dt.Rows[i][1].ToString();
}
}
private void adaptGrids()
{
dataGridView2.Rows.Clear();
dataGridView3.Rows.Clear();
dataGridView2.Columns.Clear();
dataGridView3.Columns.Clear();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
var clmn1 = new DataGridViewComboBoxColumn();
var clmn2 = new DataGridViewCheckBoxColumn();
clmn1.HeaderText = "C" + i;
clmn2.HeaderText = "C" + i;
clmn1.Width = dataGridView1.Columns[i].Width;
clmn2.Width = dataGridView1.Columns[i].Width;
clmn1.DataSource = comboBox;
dataGridView2.Columns.Add(clmn2);
dataGridView3.Columns.Add(clmn1);
}
dataGridView2.Rows.Add();
dataGridView3.Rows.Add();
}
Один из тех случаев, когда даже не знаю куда копать. Есть идеи?
The exception is thrown at line if (bool.Parse(row.Cells[0].Value.ToString())).
Exception details:
System.NullReferenceException: ‘Object reference not set to an instance of an object.’
System.Windows.Forms.DataGridViewCell.Value.get returned null.
private void btnDeleteCategory_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in CategoryGV.Rows)
{
if (bool.Parse(row.Cells[0].Value.ToString()))
{
string cs = ConfigurationManager.ConnectionStrings[«aladin»].ConnectionString;
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd = new SqlCommand(«DELETE FROM lwpos_categories WHERE id= ‘» + Convert.ToInt32(row.Cells[1].Value) + «‘ «, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
MessageBox.Show(«Deleted Successfully», «Successfull operation», MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Ошибка: «Входная строка была в неправильном формате.»
int sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
}
label1.Text = sum.ToString();
Выше приведен код для расчета. Когда я запускаю приложение, он не отображает ошибок. После загрузки datagridview из MySql и нажатия кнопки, которая приводит к вышеуказанной функции, отображается ошибка.
System.FormatException: «Строка ввода не была в правильном формате».
sum += Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
Вот пример datagridview
Если я сменил ячейки [2] на ячейки [0], он отлично работает
Я все еще новичок на С#, но Im догадывается, что он не может преобразовать данные в столбце «заработанные» в целые числа?
03 окт. 2018, в 15:20
Поделиться
Источник
Учитывая ваш скриншот, Cells[2]
не является int
а Decimal
и сумма должна быть объявлена таким типом.
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
sum += Decimal.Parse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString());
}
Если по некоторым причинам значение пустое или неправильное, существует способ проверить, было ли преобразование успешным с помощью TryParse:
Decimal sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal temp;
if (Decimal.TryParse((dataGridView1.Rows[i].Cells[2].Value ?? "").ToString(), out temp))
sum += temp;
}
label1.Text = sum.ToString();
Примечание: (dataGridView1.Rows[i].Cells[2].Value?? "")
выполнит проверку против dataGridView1.Rows[i].Cells[2].Value
. Если он равен null
вместо » null
""
будет использоваться значение ""
. null.ToString()
исключение.
Cid
03 окт. 2018, в 10:11
Поделиться
Вы должны проверить, имеет ли поле числовое значение, а затем преобразует его в int.
float sum = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
float temp = 0;
float.TryParse(dataGridView1.Rows[i].Cells[2].Value?.ToString(), out temp);
sum += temp;
}
label1.Text = sum.ToString();
Amin Mozhgani
03 окт. 2018, в 10:57
Поделиться
Попробуй это
Decimal sumcol = 0;
for (int i = 0; i < dataGridView1.Rows.Count;++i)
{
Decimal val;
string colval = dataGridView1.Rows[i].Cells[2].Value.ToString();
if(colval != null){
if (Decimal.TryParse(colval, out val))
sum += val;
}
label1.Text = sum.ToString();}
TouchStarDev
03 окт. 2018, в 10:48
Поделиться
Ещё вопросы
- 1Рассчитать Tf-Idf баллы в пандах?
- 1Событие Loaded FrameworkElement — сборка мусора
- 1Какое лучшее решение для чтения большого XML-документа?
- 0MercadoPago Тестовый пользователь
- 1Java создать экземпляр с глубоко пустыми объектами
- 1response-native-twilio-video-webrtc Ошибка компиляции Android
- 1Максимальный размер веб-страницы в целом? iPhone? Android?
- 0я хочу скрыть все данные ответа json из браузера
- 0Grails Webflow с мастером jQuery формы не работает
- 0Угловой JS: «это» внутри функции нг-если
- 0WSDL: не могу определить параметр для метода
- 1Не удается импортировать замороженный график после добавления слоев в модель Keras
- 0CSS img вызывает проблемы
- 0Jsoup, чтобы получить данные в блоке <b>
- 0AngularJS: of-repeat, of-if & JSON
- 1Как отделить символ валюты от денежной стоимости и сохранить десятичные дроби и запятые?
- 0Как получить обновленный идентификатор строки в Java
- 1Сборка колоды карт в Java с использованием 2 разных ENUMS
- 1Проблемы разработки VoIP PBX
- 1MetadataMBeanInfoAssembler не поддерживает динамические прокси JDK
- 0Где настраивается версия продукта ID, корпорация и другая информация приложения в C ++
- 0Удалить несколько выбранных строк DataTable одним щелчком мыши?
- 0свойство переполнения для элементов с абсолютным позиционированием
- 0Метод удаления C ++ AVLtree
- 0Ионная сборка iOS удаляет изменения
- 1Как украсить TableCellRenderer инструкциями, связанными с графикой?
- 1Расположение провайдеров в Android?
- 1Как нажать кнопку после успешного Ajax?
- 1Как игнорировать разделитель CSV в кавычках?
- 1Пустой канал в плагине страницы Facebook (встроенный виджет каналов)
- 1Посылка событий клавиатуры программно не отправляет их во входы
- 1Как вы фокусируете эмулятор Android разработчика?
- 0Как непрерывно запускать скрипт PHP на сервере виртуального хоста?
- 0Завершение неиспользуемых подключений http, которые являются результатом img ng-src
- 0Два SQL-запроса в одном sql
- 1То же действие по добавлению, но разные результаты в Javascript
- 1Прото-сообщение, требующее использования параметра ref при попытке создать экземпляр
- 1Использование pandas dataframe для записи значений в новую ошибку csv-файла
- 1Похоже, плагин Android SDK сильно влияет на Eclipse
- 0Проверка Jquery на содержание div
- 0Почему индекс (по столбцу первичного ключа) не используется?
- 0Вставка данных в таблицу MySQL из многоязычной HTML-формы через PHP
- 0Как сделать директиву в контроллере?
- 1Highcharts Синхронизированные графики с отсутствующими точками данных
- 0Тип пользовательского поля Symfony2 и события формы при отправке
- 1Скрыть ошибку без обходного пути
- 0PHP генерирует категорию и подкатегорию из базы данных [дубликаты]
- 1Получение ошибки исключения нулевой точки java.lang при обработке
- 0Как использовать модель (дерево решений) в C / C ++, которая обучалась в R?
- 1Есть ли необходимость в использовании обобщенных шаблонных шаблонов в методе сквозной передачи?
Here I need to avoid null from datagridview (winform)
private void SendUpdate()
{
if ((string)dataGridView1.SelectedRows[0].Cells[0].Value != string.Empty )
{
if (1 == dataGridView1.SelectedRows.Count)
{
int Id = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value);
Update up = new Update();
up.AssignValue(Id);
up.textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
up.comboBox1.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
up.textBox2.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
up.textBox3.Text = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
up.textBox4.Text = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
up.textBox5.Text = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
up.ShowDialog();
}
else
{
MessageBox.Show("Please Select the Single Data Which Required to Update");
}
}
else
{
MessageBox.Show("You Select the empty Row");
}
}
I had try !=string.empty;
, !=null;
, !="";
but error not solved.
1 == dataGridView1.SelectedRows.Count
it true
But
(string)dataGridView1.SelectedRows[0].Cells[0].Value
have null value
Show error
System.NullReferenceException: ‘Object reference not set to an instance of an object.’
System.Windows.Forms.DataGridViewCell.Value.get returned null.
Technical Problem Cluster First Answered On
October 7, 2020
Popularity
8/10
Helpfulness
4/10
System.Windows.Forms.DataGridView.CurrentRow.get returned null. c#
Popularity
6/10 Helpfulness
4/10
Language
python
Contributed on Oct 07 2020
Helpful Hyena
4 Answers Avg Quality 5/10
System.Windows.Forms.DataGridView.CurrentRow.get returned null. c#
Popularity
6/10 Helpfulness
4/10
Language
csharp
Contributed on Oct 07 2020
Helpful Hyena
4 Answers Avg Quality 5/10
System.Windows.Forms.DataGridView.CurrentRow.get returned null. c#
Popularity
4/10 Helpfulness
1/10
Language
csharp
Contributed on Oct 07 2020
Helpful Hyena
4 Answers Avg Quality 5/10