DataBind и обратная передача

Различные вопросы:

  • Функция должна быть void debounceSwitch(volatile uint8_t* port, uint8_t pin). Указатели на аппаратные регистры всегда должны быть volatile. Не имеет смысла что-либо возвращать.
  • Никогда не используйте 1 литералы со знаком int при сдвиге битов. Должно быть 1u << n, иначе ваша программа выдаст ошибку, если n больше 8.
  • Сжигание 30 мс несколько раз в суете - ужасная практика. Он на 100% заблокирует ваш процессор, ничего не делая бессмысленно.

Есть много способов отменить кнопки. Простейшая профессиональная форма, вероятно, состоит в том, чтобы иметь периодический таймер, работающий с прерыванием каждые 10 мс (этого должно быть достаточно, если сомневаетесь, измерьте шипы отклонения вашей кнопки с областью действия). Это будет выглядеть примерно так: псевдокод:

volatile bool button_pressed = false;

void timer_interrupt (void)
{
  uint8_t button = port & mask;
  button_pressed = button && prev;
  prev = button;
}

Это при условии, что кнопки используют активную высокую логику.

6
задан Michael La Voie 6 May 2009 в 19:09
поделиться

3 ответа

Вы правы в том, что детализированный элемент управления, который вы ищете, невозможен и требует кода. Объекты источников данных ASP.NET - не что иное, как головная боль в **. Вы обнаружите, что, используя их, вы будете сталкиваться с подобными ситуациями снова и снова.

Вот некоторые из проблем, которые вы обнаружите:

  • Не строго типизированный
  • Негибкий (как вы заметили)
  • Неаккуратный код презентации

Я взял на себя весь доступ к данным в коде позади и не оглядывался назад.

12
ответ дан 8 December 2019 в 05:23
поделиться

Да. Если вам нужен такой контроль над тем, когда происходит привязка данных, вам нужно сделать это в коде.

2
ответ дан 8 December 2019 в 05:23
поделиться

Я также боролся с этой автоматической привязкой и решил опубликовать свое решение здесь:

  1. удалите «DataSourceID» со страницы ASPX, когда он не установлен, автоматическая привязка отсутствует
  2. устанавливайте DataSourceID в CodeBehind только тогда, когда требуется DataBinding: myGridView.DataSourceID = "MyDataSource";
  3. не вызывайте myGridView.DataBind () явно, привязка данных происходит автоматически в PreRender

Мне потребовалось время, чтобы понять это выходит, но сейчас все работает нормально.

Контекст

Я использую ObjectDatasource, потому что он автоматически обрабатывает все пейджинг и сортировку Gridview. Я использую уровень данных с Linq2SQL и использую его методы Skip () и Take () для загрузки только объема данных, необходимого для заполнения одной страницы GridView.

Использование SelectMethod и SelectCountMethod ObjectDataSource

9
ответ дан 8 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: