PDA

View Full Version : سوال: خطا NullReferenceException در اضافه کردن چارت



vB.N3T
یک شنبه 06 تیر 1395, 23:40 عصر
دوستان من در برنامم چارت دارم
وقتی برنامه کامپایل میشه این خطا رو دارم

کد هامم اینه

public MainWindow()
{
InitializeComponent();
showchart();
}

private void showchart()
{
Personenti db = new Personenti();
Tbl_hesab hesab = new Tbl_hesab();


List<KeyValuePair<string, int>> myvalue = new List<KeyValuePair<string, int>>();

int count = db.Tbl_hesab.Count();

if (count != 0)
{
for (int i = 1; i <= count; i++)
{
var query = db.Tbl_hesab.Where(c => c.id == i).Single();
myvalue.Add(new KeyValuePair<string, int>(query.bank, query.firstMojodi.Value));
}
}


cchart.DataContext = myvalue;
}

وقتی این خط رو برمیدارم برنامه بدون خطا اجرا میشه ولی خب چارت پر نمیشه
ینی مشکل از این خطع
myvalue.Add(new KeyValuePair<string, int>(query.bank, query.firstMojod

ژیار رحیمی
یک شنبه 06 تیر 1395, 23:55 عصر
سلام چرا حلقه forزدی ؟ مشکل از query.firstMojodi.Value

Personenti db = new Personenti();
var hesab = new Tbl_hesab();
var myvalue = new List<KeyValuePair<string, int>>();
foreach (var item in db.Tbl_hesab.ToList())
myvalue.Add(new KeyValuePair<string, int>(item.bank, item.firstMojodi.Value));
if(myvalue.Count>0)
cchart.DataContext = myvalue;

البته را بهتر چک کردن null نبودن fristMojodi هست.اگر مطمئنی همیشه مخالف null هست از کد بالا و در غیر اینصورت از کد پایین استفاده کن

Personenti db = new Personenti();
var hesab = new Tbl_hesab();
var myvalue = new List<KeyValuePair<string, int>>();
foreach (var item in db.Tbl_hesab.ToList())
{
if(item.firstMojodi !=null)
myvalue.Add(new KeyValuePair<string, int>(item.bank, item.firstMojodi.Value));
else myvalue.Add(new KeyValuePair<string, int>(item.bank, 0));
}
if(myvalue.Count>0)
cchart.DataContext = myvalue;

vB.N3T
دوشنبه 07 تیر 1395, 08:09 صبح
اصلا معلوم نیست چرا خطا میده
حتی دستی هم وارد میکنم مقادیر رو بازم همین خطا رو میده

List<KeyValuePair<string, int>> myvall = new List<KeyValuePair<string, int>>();
myvall.Add(new KeyValuePair<string, int>("ddddd", 2323));
cchart.DataContext = myvall;

ژیار رحیمی
دوشنبه 07 تیر 1395, 13:47 عصر
اگر بصورت دستی مقدار دهی کردی و باز با خطا مواجه شدی.مشکل از متغییر myvall هست تبدیل به لیست کن.

cchart.DataContext = myvall.ToList();


اگر مشکل شما باز حل نشد.از یک class کمکی استفاده کن


public class ChartData
{
public string Bank{get;set;}
public int Value{get;set;}
}


-------------------------------------------

Personenti db = new Personenti();
var hesab = new Tbl_hesab();
var myvalue = new List<ChartData>();
foreach (var item in db.Tbl_hesab.ToList())
myvalue.Add(new ChartData(item.bank, item.firstMojodi.Value));
if(myvalue.Count>0)
cchart.DataContext = myvalue.ToList();