void BuildDiagram()
{
chartRating.Series[0].Points.Clear();
foreach (DataRow r in ClientsTable.Rows)
if (Convert.ToInt16(r[3]) != 0)
chartRating.Series[0].Points.AddXY(r[1], r[3]);
}
Convert.ToInt16 выбрасывает OverflowException если переданное значение не укладывается в диапазон Int16, т.е. от -32768 до 32767.
Варианты решения проблемы:
Int32, Int64, или Decimal;if(Convert.ToDecimal(r[3])!=0)
r[3] и привести к нему.Если после этого зачем-то потребуется привести к Int16, то нужно учесть границы диапазона, либо привести между числовыми типами с переполнением:
int value = Convert.ToInt32(r[3]);
short shortValue = (short) value;
"Исключение, которое выдается, если выполнение арифметической операции, операции приведения к типу или преобразования в проверяемом контексте приводит к переполнению." На Msdn
Convert.ToInt16(r[3]) - ошибка скорее всего тут.
Если r[3] является объектом, который имеет тип Int32, то можете использовать следующий метод явного преобразования: (Int16)r[3].
В настройках проекта на вкладке Build жмём кнопку Advanced и снимаем галочку Check for arithmetic overflow, тогда ошибки переполнения не возникнет.
Важно понимать, что при таком переполнении в этом примере (Int16)r[3] вы получите неожиданный результат.
Если r[3] является строкой, то попробуйте воспользоваться конструкцией: try {} catch {}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости