自动更新数据网格视图

时间:2014-10-22 12:12:29

标签: c# datagridview datagrid

表单中的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

1 个答案:

答案 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));
}