我有一个非常简单的问题。
List<OrderTripChangedAlertItem> da = new List<OrderTripChangedAlertItem>();
da.Add(new OrderTripChangedAlertItem(1, "2", "3"));
BindingSource bs = new BindingSource();
bs.DataSource = da;
GridView.DataSource = bs;
和班级
public class OrderTripChangedAlertItem
{
public int RecordID { get; set; }
public string RecordInformation { get; set; }
public string RecordType { get; set; }
public OrderTripChangedAlertItem(int recordID, string recordInformation, string recordType)
{
RecordID = recordID;
RecordInformation = recordInformation;
RecordType = recordType;
}
}
为什么我有GridView.Rows = 0?这是Telerik的网格,但我和通常的DataGridView一样。
使用通用列表填充网格视图的正确方法是什么? 因为我已经花了一半时间而且不能填补网格。 我也没试过BindingList和Datatable。
我只能写GridView.Rows.Add(1,“2”,“3”);然后才能在网格中看到这条记录。当然,这不是我想要的。我需要绑定一个列表。
PS我甚至尝试了一些List {string}和DataGridView,也没有大于0的行数。
答案 0 :(得分:1)
我不是WinForms绑定大师,但我一直在解决自己的一些问题,我想知道你的问题是否是赋值和绑定的顺序。
我试试这个
List<OrderTripChangedAlertItem> da = new List<OrderTripChangedAlertItem>();
BindingSource bs = new BindingSource();
bs.DataSource = da;
GridView.DataSource = bs;
da.Add(new OrderTripChangedAlertItem(1, "2", "3"));
因此,在DataGrid绑定到BindingSource之后,绑定数据肯定会发生变化,因此会监视更改通知。
我承认你的代码看起来应该像写的那样工作,因为将任何分配给GridView的DataSource属性应该注册为一个更改,但我仍然尝试上面的代码。我的WinForms绑定表现不一样,因为它“应该”这样做。我更喜欢WPF绑定!
[UPDATE] 您应该使用BindingList作为BindingSource的DataSource,并使用您的通用列表作为数据,因此:
List<OrderTripChangedAlertItem> da = new List<OrderTripChangedAlertItem>();
BindingList bl = new BindingList<OrderTripChangedAlertItem>(da);
BindingSource bs = new BindingSource();
bs.DataSource = bl;
GridView.DataSource = bs;
da.Add(new OrderTripChangedAlertItem(1, "2", "3"));
我忘记了细节,但是BindingList为List更改通知实现了一些好处: - )