Nano Hash - криптовалюты, майнинг, программирование

проблема со списком флажков

У меня есть 5 CheckBoxList элементов управления с ID из CheckBoxList1, CheckBoxList2 и так далее. В них есть одинаковые элементы списка.

Теперь, когда я пишу следующую строку:

CheckBoxList1.Items[0].Selected = true;

Он выбирает 1-й элемент из CheckBoxList1, но также выбирается 1-й элемент из всех остальных CheckBoxList. Есть идеи, почему происходит такая загадочная вещь?

Все CheckBoxList имеют одинаковое количество элементов, каждый из которых имеет одинаковый текст и одинаковое значение.

Они заполняются динамически данными, извлекаемыми из базы данных.

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM EMPLOYEE_TABLE WHERE EMPLOYEE_TABLE.EmployeeID NOT IN (SELECT ORG_UNIT.ManagerID FROM ORG_UNIT WHERE ORG_UNIT.OrgUnitID = '" + teamid + "') AND EMPLOYEE_TABLE.OrgUnitID = '" + teamid + "'",con);

DataSet da = new DataSet();
DataTable table = new DataTable();
adapter.Fill(table);
adapter.Fill(da);
int count = da.Tables[0].Rows.Count;
CheckBoxList1.Items.Clear();
CheckBoxList2.Items.Clear();
CheckBoxList3.Items.Clear();
CheckBoxList4.Items.Clear();
CheckBoxList5.Items.Clear();

no_of_listitem = count;

for (int i = 0; i < table.Rows.Count; i++)
{
    ListItem temp = new ListItem();
    temp.Text = table.Rows[i]["FName"].ToString();
    employeeid[i] = table.Rows[i]["EmployeeID"].ToString();
    temp.Value = i.ToString();
    CheckBoxList1.Items.Add(temp);
    CheckBoxList2.Items.Add(temp);
    CheckBoxList3.Items.Add(temp);
    CheckBoxList4.Items.Add(temp);
    CheckBoxList5.Items.Add(temp);
} 

  • Можете ли вы предоставить несколько фрагментов кода того, как вы инициируете некоторые из этих CheckBoxList? 2 штуки будет достаточно 20.04.2011
  • Пожалуйста, предоставьте функцию населения.. 20.04.2011
  • попробуйте этот CheckBoxList1.Items[2].Selected = true; если будет то же самое дайте знать 20.04.2011
  • элемент [2] из всех списков флажков выбирается. :( 20.04.2011

Ответы:


1

Вероятно, это из-за того, как вы заполняете эти списки...

Я думаю, вы добавляете одни и те же объекты в каждый список. Таким образом, любая модификация любого объекта влияет на все списки.


Используйте следующее утверждение:

    CheckBoxList.Items.Add(New ListItem(table.Rows[i]["FName"].ToString(), 
table.Rows[i]["EmployeeID"].ToString())); 
20.04.2011
  • как мне решить проблему? я имею в виду, что мне нужно изменить.? 20.04.2011
  • мне нужно динамически добавлять элементы в список. я предоставил код, как я добавляю элементы в списки. как я могу использовать заявление, которое вы предоставили ??? 20.04.2011
  • вы добавляете один и тот же объект во все списки 20.04.2011
  • Я думаю, что как разработчик вы должны знать, что ему нужно заменить приведенное выше утверждение соответствующим для каждого CheckBoxList.. 20.04.2011
  • мой комментарий предназначался для Анарги 20.04.2011
  • эй большое спасибо .. это решает проблему. можете объяснить почему так произошло?? элементы, которые я добавлял в списки флажков, одинаковы даже сейчас. не вижу разницы между ними.. 20.04.2011
  • @Anargha: вы ссылались на один и тот же объект из разных мест. Когда вы изменяете этот объект, это затрагивает все ссылки. 20.04.2011
  • @Anargha есть разница между объектом и ценностью объекта. Разные объекты могут иметь одинаковое значение. Если 2 объекта имеют одинаковое значение, это не означает, что они являются одним и тем же объектом. 20.04.2011

  • 2

    Акрам прав - все CheckBoxList содержат не только элементы, которые выглядят одинаково, они являются одинаковыми. Итак, чтобы ответить на ваш вопрос напрямую, вам нужно добавить new ListItem для каждого CheckBoxList, например:

    for (int i = 0; i < table.Rows.Count; i++)
    {
        var firstName = table.Rows[i]["FName"].ToString()
        var employeeId = table.Rows[i]["EmployeeID"].ToString();
    
        CheckBoxList1.Items.Add(new ListItem { Text = firstName, Value = employeeId });
        CheckBoxList2.Items.Add(new ListItem { Text = firstName, Value = employeeId });
        CheckBoxList3.Items.Add(new ListItem { Text = firstName, Value = employeeId });
        CheckBoxList4.Items.Add(new ListItem { Text = firstName, Value = employeeId });
        CheckBoxList5.Items.Add(new ListItem { Text = firstName, Value = employeeId });
    }
    
    20.04.2011
  • спасибо. Я решил проблему благодаря идее Акрама. Я понял проблему. 20.04.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..