表单中的Datagrid视图将从List中填充 我有这个表单,其中包含一个从List中填充的datagridview。 当我单击每行上的“用户”按钮时,也会出现数据网格中的用户列表
新表单上的数据网格通过我传递的列表进行更新,当我点击“用户”按钮时,会发生以下情况:
GetUserDescriptorDetails gtUserDetails = new GetUserDescriptorDetails(name, xmlData, CreateListDynamically(name));
gtUserDetails.ShowDialog();
CreateListDynamically方法是这样的:
public BindingList<xml.UserDescriptor> CreateListDynamically(string _name)
{
foreach (xml.UserDescriptor dbList in xmlData.Users)
{
if (dbList.DatabaseDescriptorName == _name)
{
users.Add(new xml.UserDescriptor() { DatabaseDescriptorName = dbList.DatabaseDescriptorName, Username = dbList.Username, Password = dbList.Password, IsAdmin = dbList.IsAdmin });
}
}
return users;
}
现在列表很好,但是每次我点击“用户”按钮时行都会重复,因为users.Add。我怎么解决这个问题? 我添加值的事实只是填充列表,有没有其他方法来获取具有条件的列表:
dbList.DatabaseDescriptorName == _name
答案 0 :(得分:1)
在CreateListDynamically(string _name)
方法中,您永远不会清除之前的users
列表,这就是您获得重复的原因。
在users.Clear()
循环之前添加foreach
,复制应该消失。
这个全部假设users
是一个类变量,因为我没有看到它作为变量传递给方法
您还可以做的是将users
变量完全解耦,并在方法中为结果集添加一个临时变量:
public BindingList<UserDescriptor> CreateListDynamically(string _name)
{
return new BindingList<UserDescriptor>(xmlData.Users.FindAll(x => x.DatabaseDescriptorName == _name));
}