Home > .NET, C# > Problem Binding nullable type to Control

Problem Binding nullable type to Control

Binding data cho combobox tại hàm Form_Load:

Order order = new Order();

List<Customer> custList = new List<Customer>();

custList.Add(new Customer(1, “customer 1”));

custList.Add(new Customer(2, “customer 2”));

custList.Add(new Customer(3, “customer 3”));

custList.Add(new Customer(4, “customer 4”));

combobox1.DataBindings.Add(“SelectedValue”, order, “CustomerID”);

combobox1.DataSource = custList;

combobox1.DisplayMember = “Name”;

combobox1.ValueMember = “ID”;

Order class:

public class Order
{
private int? _id;
private int? _custID;
private List _listItems;

public int? ID
{
get { return _id; }
set { _id = value; }
}

public int? CustomerID
{
get { return _custID; }
set { _custID= value; }
}

public List ListItems
{
get{ return _listItems; }
set{ _listItems = value; }
}
}

Customer class:

public class Customer
{
private int? _id;
private string _name;

public Customer(int? id, string name)
{
_id = id;
_name = name;
}

public int? ID
{
get { return _id; }
set { _id = value; }
}

public string Name
{
get { return _name; }
set { _name = value; }
}
}

Chạy lên form, chọn 1 thằng customer trên combobox, rời khỏi combobox1 ->thằng combobox1 tự động quay trở về giá trị ban đầu (SelectedValue của nó không update khi sự kiện SelectedIndexChanged)

Ngồi mò mẫm cả tiếng mới mà không biết lý do tại sao -> thử thay đổi lại code của lớp Customer: chuyển từ int?(nullable) sang int -> combobox1 hoạt động bình thường trở lại -> tiếp tục search google để tìm hiểu nguyên nhân và cách thức để có thể binding nullable type vào winform controll.

Giải quyết vấn đề:

combobox1.DataBindings.Add(“SelectedValue”, cust, “Name”, true);

thiết lập tham số formattingEnabled = true giúp controll tự động định dạng (auto formatting) hiển thị cho dữ liệu. Tham số này thường được sử dụng cùng với thuộc tính FormatString của lớp Binding (thường được dùng khi dữ liệu cần hiển thị trên form dưới 1 định dạng khác tương ứng với Culture)

Categories: .NET, C# Tags:
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: