PDA

View Full Version : سوال: برطرف کردن خطای NullRefrenceException



bmvgod
جمعه 30 آذر 1397, 23:26 عصر
باسلام خدمت دوستان
یک فرم اصلی دارم که باهاش داده هامو اضافه میکنم. جهت ویرایش، سطری از DataGridView، فرم جستجوم رو، با استفاده از کد زیر میفرستم به فرم اصلیم:

private void dgvCommod_CellClick(object sender, DataGridViewCellEventArgs e)
{
txtCommodType.Text = dgvCommod.CurrentRow.Cells["CommodType"].Value.ToString();
txtAbbrev.Text = dgvCommod.CurrentRow.Cells["CommodAbbrev"].Value.ToString();
}


با کد زیر تو Form Load صفحه اصلیم اطلاعاتو میگیرم و تو TextBox نمایش میدم:

public DataGridViewRow dgView;
private void frmAddCommodity_Load(object sender, EventArgs e)
{
txtName.Text = dgView.Cells[0].Value.ToString();
txtTyp.Text = dgView.Cells[1].Value.ToString();
}

با این روش بدرستی رکوردهای دلخوام منتقل میشه، ولی وقتی فرم اصلیم رو باز میکنم برا درج اطلاعات با خطای زیر مواجه میشم:

149483

میشه راهنماییم کنید ک چجوری این مشکل رو رفع کنم؟
باتشکر از تمامی دوستان

mmbguide
شنبه 01 دی 1397, 10:08 صبح
میتونی قبل استفاده از یک مقدار از NULL بودن اون مطلع بشی و اگر NULL بود یک مقدار جایگزین نماش بده و در غیراینصورت خود مقدار رو


Convert.IsDBNull(YourValue)

مهدی کرامتی
شنبه 01 دی 1397, 10:43 صبح
کد رو به این صورت تغییر بده و نتیجه رو گزارش بده:
public DataGridViewRow dgView;

private void frmAddCommodity_Load(object sender, EventArgs e)

{

txtName.Text = dgView.Cells[0].Value?.ToString();

txtTyp.Text = dgView.Cells[1].Value?.ToString();

}

bmvgod
شنبه 01 دی 1397, 15:44 عصر
کد رو به این صورت تغییر بده و نتیجه رو گزارش بده:
public DataGridViewRow dgView;

private void frmAddCommodity_Load(object sender, EventArgs e)

{

txtName.Text = dgView.Cells[0].Value?.ToString();

txtTyp.Text = dgView.Cells[1].Value?.ToString();

}




از tostring. خطا میگیره
149486

مهدی کرامتی
جمعه 14 دی 1397, 13:48 عصر
نوع داده (Data Type) ردیف هایی که تو گرید پر میشه چیه؟

با استفاده از اون می توانید از پراپرتی DataBoundItem به جای Cell ها استفاده کنید، مثال:
var data = dgView.CurrectRow.DataBoundItem as YourDataType;
txtName.Text = data.Name;
txtTyp.Text = data.Type;