01/10/2018, 15:22
Lỗi NullReferenceException khi sửa dữ liệu trong datagridview
Chào các anh chị:
Em đang học winform c#, khi học về datagridview và đổ dữ liệu vào từ database sử dụng linq.
Khi sửa 1 ô trong datagridview thì em bị lỗi :
System.NullReferenceException: Object reference not set to an instance of an object.
Lý do là khi có ô dữ liệu trống thì sẽ xuất hiện lỗi trên do không chuyển sang kiểu string được nên để sửa lỗi này, em thêm dòng code này vào:
if (dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString() == null)
edit.state = null;
else
edit.state = dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString();
Để kiểm tra nếu ô state có trống hay không, nếu trống thì sẽ gán edit.State = null. Nhưng vẫn bị lỗi, khi chạy debug thì hàm dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString() có value

Anh chị giúp em sửa lỗi này
Source Code:
using (QuanLyKhachSanDataContext db = new QuanLyKhachSanDataContext())
{
string id = dgv1.SelectedCells[0].OwningRow.Cells["id"].Value.ToString();
string Name = dgv1.SelectedCells[0].OwningRow.Cells["name"].Value.ToString();
string Address = dgv1.SelectedCells[0].OwningRow.Cells["address"].Value.ToString();
//string State = dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString();
s_customer edit = db.s_customers.Where(p => p.id.Equals(id) == true).Single();
edit.id = id;
edit.name = Name;
edit.address = Address;
if (dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString() == null)
edit.state = "null";
else
edit.state = dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString();
db.SubmitChanges();
dgv1.DataSource = from u in db.s_customers
select u;
}
Bài liên quan
Mình tìm được cách sửa lỗi:
thay vì dùng hàm ToString() thì dùng hàm Convert.ToString().
hàm ToString() không xử lý khi chuyển chuỗi null còn hàm Convert.ToString() thì xử lý cả chuỗi null nữa
thay vì dùng
dgv1.SelectedCells[0].OwningRow.Cells["state"].Value.ToString()
bạn dùng
(string)dgv1.SelectedCells[0].OwningRow.Cells["state"].Value
Liệu có tác dụng không?