2014-10-22 4 views
0

Datagrid View в форме заполняется из списка У меня есть эта форма с datagridview, которая заполняется из списка. Когда я нажимаю кнопку «Пользователи» в каждой строке, должен появляться список пользователей также в datagridАвтоматическое обновление datagridview

Datagrid в новой форме обновляется по списку, который я передаю, когда я нажимаю кнопку «Пользователи», это то, что бывает:

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 строки продублировать, из-за users.Add. Как я могу это решить? Того факт, что я добавить значения только для заполнения списка, есть ли другой способ, чтобы получить список с условием:

dbList.DatabaseDescriptorName == _name 
+0

Каково определение 'xmlData.Users'? –

+0

Это: открытый список Users {get; задавать; } – Perf

ответ

1

Внутри вашего метода CreateListDynamically(string _name), вы никогда не клиринговые предыдущий users списка, это будет почему вы получаете дублирование.
Добавьте users.Clear() перед вашей петлей foreach, и дублирование должно исчезнуть.

Это все OFC предполагает, что users это переменная класса, так как я не вижу, что передается в метод в качестве переменной

Что вы могли бы также сделать это полностью разъединить переменная users и просто иметь временную переменную ваш результат в вашем методе:

public BindingList<UserDescriptor> CreateListDynamically(string _name) 
{ 
    return new BindingList<UserDescriptor>(xmlData.Users.FindAll(x => x.DatabaseDescriptorName == _name)); 
} 
+0

спасибо, но мне нужно добавить новых пользователей в форму, и когда я очищу его, не сохранит значение – Perf

+0

, так или иначе, используя условие where, чтобы получить список с этим условием? – Perf

+0

См. Мое дополнение к ответу на развязку «пользователей» по методу –

Смежные вопросы