none
ToggleButton событие Unchecked RRS feed

  • Вопрос

  • WPF

    Есть у меня ListView и 16 кнопок ToggleButton, есть база, в числе прочих есть поле NumberButton (smallint).

    Нажимаю кнопку ToggleButton1 и подгружаются в ListView данные у которых в базе в поле NumberButton стоит 1.

    Если нажимаю ToggleButton2 то в ListView добавляются данные из базы у которых NumberButton стоит 2.

    Если нажимаю ToggleButton14 то в ListView добавляются данные из базы у которых NumberButton стоит 14.

    А вот как сделать, чтобы по событию Unchecked у кнопки выгружались из ListView данные, которые подгружались по этой кнопке. Например отжал кнопку ToggleButton2, и из ListView удалились только данные, которые подгрузились по событию ToggleButton2_Checked т.е. те которые в базе в поле NumberButton = 2;

    ListView в виде DataGrid не надо.



    • Изменено developers_s 14 апреля 2012 г. 18:17
    14 апреля 2012 г. 17:03

Ответы

  • что бы не ваять кучу обработчиков событий, прописать в ToggleButton поле Tag ID за который она отвечает, таким образом можно одним обработчиков обработать нажатия и отжатия на все ToggleButton.

    код примерный обработчика:

    private void СheckboxesCheckedChanged(object sender, EventArgs e) { int ID; // проверочек по желанию накидать, например на то, что sender is CheckBox if (Int32.TryParse((sender as CheckBox).Tag.ToString(), out ID)) { ChangeSelection(ID, (sender as CheckBox).Checked); } else { //уведомить разработчика о забытии прописать ID } } private void ChangeSelection(int ID, bool show) { if (!show) { var disableItems = listView1.Items.Cast<ListViewItem>().Where(x => (int)x.Tag == ID); foreach (var item in disableItems) { listView1.Items.Remove(item); } } else { //добавляем элементы, не забыть прописать тег в виде ID для ListViewItem

    // код добавления элементов из базы по ID

    // асинхронно

    // не забыть форме сделать Enable = false в начале загрузки, а потом true в конце=)

    } }


    ну, примерно подход понятен? =) Должно работать, по памяти написал. И да, про проверочки не забудьте =)



    • Изменено Dmytro Bondarenko 14 апреля 2012 г. 22:13
    • Помечено в качестве ответа developers_s 15 апреля 2012 г. 5:37
    14 апреля 2012 г. 22:06
  • Речь шла о свойстве Tag


    Для связи [mail]

    • Помечено в качестве ответа developers_s 26 апреля 2012 г. 9:49
    26 апреля 2012 г. 5:39

Все ответы

  • что бы не ваять кучу обработчиков событий, прописать в ToggleButton поле Tag ID за который она отвечает, таким образом можно одним обработчиков обработать нажатия и отжатия на все ToggleButton.

    код примерный обработчика:

    private void СheckboxesCheckedChanged(object sender, EventArgs e) { int ID; // проверочек по желанию накидать, например на то, что sender is CheckBox if (Int32.TryParse((sender as CheckBox).Tag.ToString(), out ID)) { ChangeSelection(ID, (sender as CheckBox).Checked); } else { //уведомить разработчика о забытии прописать ID } } private void ChangeSelection(int ID, bool show) { if (!show) { var disableItems = listView1.Items.Cast<ListViewItem>().Where(x => (int)x.Tag == ID); foreach (var item in disableItems) { listView1.Items.Remove(item); } } else { //добавляем элементы, не забыть прописать тег в виде ID для ListViewItem

    // код добавления элементов из базы по ID

    // асинхронно

    // не забыть форме сделать Enable = false в начале загрузки, а потом true в конце=)

    } }


    ну, примерно подход понятен? =) Должно работать, по памяти написал. И да, про проверочки не забудьте =)



    • Изменено Dmytro Bondarenko 14 апреля 2012 г. 22:13
    • Помечено в качестве ответа developers_s 15 апреля 2012 г. 5:37
    14 апреля 2012 г. 22:06
  • Поразбираюсь Спасибо
    15 апреля 2012 г. 5:37
  • Возникнут вопросы - задавайте, поможем :)


    Для связи [mail]

    16 апреля 2012 г. 16:13
  • прописать в ToggleButton поле Tag ID за который она отвечает, 

    Это в свойствах UID?
    25 апреля 2012 г. 18:52
  • Речь шла о свойстве Tag


    Для связи [mail]

    • Помечено в качестве ответа developers_s 26 апреля 2012 г. 9:49
    26 апреля 2012 г. 5:39
  • Ладно покопаю :)
    26 апреля 2012 г. 9:49