Asp.NET выпадающий список автоответчик - PullRequest
0 голосов
/ 19 декабря 2011

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

Если я установил автостоп обратно в значение true, то при выборе значения флажки теряют свое значение ...

Есть ли какие-нибудь обходные пути?

Вот код:

<asp:DropDownList ID="dropdown" runat="server"  class="pop" AutoPostBack="true" >
</asp:DropDownList>

<asp:Repeater ID="rptD" runat="server" >
        <ItemTemplate>
        <td valign="top" >
        <input type="checkbox" class="al" />
        </ItemTemplate>
        </asp:Repeater>

Ответы [ 2 ]

4 голосов
/ 19 декабря 2011

Я предполагаю, что это потому, что вы привязываете повторитель данных не только к if(!IsPostBack), но и к обратным передачам. Поэтому проверенное состояние будет переопределено.

Так что сделайте это в Page_Load (при условии C #):

if(!IsPostBack){
   DataBindRepeater();
}

Принимая во внимание, что DataBindRepeater - это метод, который устанавливает свойство DataSource, а DataBind - Повторитель.

Возможно, вы также захотите использовать элемент управления ASP.NET Checkbox вместо html input type="checkbox". Проверенное состояние перезагружается, только если это серверный WebControl, который реализует IPostBackDataHandler .

1 голос
/ 19 декабря 2011

Звучит примерно как установка флажков в Page_Load. Это тот случай? Если вы заполняете элементы управления в Page_Load, вам нужно обернуть их в условное выражение:

if (!IsPostBack)
{
  // populate your controls from data
}

В противном случае они будут переполняться с каждым постбэком. Если у вас есть автоответчик, или вы нажимаете кнопку, или выполняете какое-то другое действие на странице, которая инициирует обратную передачу, Page_Load вызывается перед обработчиком события. В сущности, это происходит:

  1. Пользователь переходит на страницу
  2. Page_Load снимает и устанавливает флажки
  3. Пользователь выбирает элемент в DropDownList (запускает обратную передачу)
  4. Page_Load снимает и устанавливает флажки
  5. Обработчик автоответчика DropDownList называется

(На заметку ... Пожалуйста, обратите внимание на использование AJAX для динамического взаимодействия клиент-сервер, подобного этому. Autopostback делает работу пользователя неудобной, а, как вы обнаруживаете, также затрудняет разработку.)

...