Что происходит в этом коде, так это то, что переменная drv является пустой, а количество элементов в списке - 3. Может ли кто-нибудь сказать мне, что я делаю неправильно?Получить значение из списка
private void btn_save_Click(object sender, RoutedEventArgs e)
{
DataRowView drv;
bool valueToCheck;
List<Common.Rule> lst = new List<Common.Rule>();
Common.Rule ru = new Common.Rule();
lst = rr.GetAllRules().ToList();//getting all rules from database
for (int i = 0; i < ltv_rules.Items.Count; i++)
{
drv = ltv_rules.Items.GetItemAt(i) as DataRowView;
valueToCheck = Convert.ToBoolean(drv["IsSet"]);// to get the value of the combobox isSet from the list view
ru = lst[i];//getting the value of the isSet before it was binded to the list view.
if (ru.IsSet != valueToCheck)//comparing the original value (before it was binded) to the value that i get from the listview
{
ru.IsSet = valueToCheck;
bool updated = rr.UpdateRule(ru);
}
}
}
'Может кто-нибудь сказать мне, что я делаю неправильно, пожалуйста?' - ** Все **. Прежде всего, не используйте 'System.Data.DataTable'. Это просто прославленный «Словарь <строка, объект>», который заставляет вас пугать ужасное кастинг, «Convert.ToMyGranny()» и материал на основе магической струны. Во-вторых, создайте правильную модель данных для хранения ваших данных. В-третьих, если это WPF, создайте правильный ViewModel, и все ваши проблемы будут волшебным образом исчезнуть. –
Прежде всего, научитесь использовать ключевое слово 'var', чтобы не повторять себя. в-пятых, научитесь использовать LINQ для выполнения 99% операций, связанных с Collection, в C#, а не в традиционных процедурных циклах 'for' и т. п. –
@HighCore, я вижу, вы все время пишете об этом классе DataTable. Тип является допустимым и полезным способом быстрого и быстрого доступа к данным, особенно. при работе с базами данных. Серьезно неверно говорить, что это «прославленный» словарь 'this is _not_ true ... Для создания общего класса, который работает как« DataTable », потребуется много работы. Однако я согласен с утверждением модели представления. –
MoonKnight