我正在寻找一种开箱即用的方式来让表单上的 GridView 绑定到经常更新的 BindList 并维护当前条目。
我想在 GridView 中显示一些客户端对象。每隔几秒钟,我的表单就会读取一个 xml 文件,该文件包含客户端的最新信息(名称、变量编号、变量编号、状态)。我希望能够在不破坏选择的情况下更新网格中的信息。
这可以开箱即用吗?
我正在寻找一种开箱即用的方式来让表单上的 GridView 绑定到经常更新的 BindList 并维护当前条目。
我想在 GridView 中显示一些客户端对象。每隔几秒钟,我的表单就会读取一个 xml 文件,该文件包含客户端的最新信息(名称、变量编号、变量编号、状态)。我希望能够在不破坏选择的情况下更新网格中的信息。
这可以开箱即用吗?
如果 DJ KRAZE 将他的评论移至答案,他的功劳将归于他。虽然我研究了如何实现这一点,但我没有直接发现它会保持选择等。
我目前的解决方案是
using (var reader = new StreamReader(new FileStream(clientFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
{
var ser = new XmlSerializer(typeof(ClientList));
var temp = (ClientList)ser.Deserialize(reader);
foreach (var client in temp.Items)
{
if(clientWatchers.Any(c => c.Handle == client.Handle))
{
var c = clientWatchers.First(w => w.Handle == client.Handle);
c.SyncNumber = client.SyncNumber;
c.PsNumber = client.PsNumber;
c.IsHalted = client.IsHalted;
}
else
{
clientWatchers.Add(client);
}
}
var handles = clientWatchers.Select(c => c.Handle).ToArray();
foreach (var handle in handles)
{
if(temp.Items.All(c => c.Handle != handle))
clientWatchers.Remove(clientWatchers.First(c => c.Handle == handle));
}
//foreach (var client in temp.Items)
//clientWatchers.Add(client);
dgClientView.DataSource = clientWatchers;
}