2011-12-19 2 views
0

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

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

временных решений по этому вопросу?

Вот код:

<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> 
+1

Где вы заполняете эти флажки? по обратной передаче декларативно в разметке? более подробно пожалуйста. фрагменты кода очень помогли бы. – scartag

ответ

4

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

Так что это в Page_Load (предполагая, что C#):

if(!IsPostBack){ 
    DataBindRepeater(); 
} 

В то время как DataBindRepeater это метод, который устанавливает свойство DataSource и DataBind Ретранслятор.

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

+0

Я думаю, что это IsPostBack. – James

+0

@ Джеймс: Да, конечно. ;) –

+0

У меня есть! Postback в моем методе загрузки, но все тот же результат. также почему переинтегрировать, когда он еще не сохранен в базе данных? – James

1

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

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

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

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

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

+0

им делать это не на обратной стороне .. – James

+0

@Samim: Можете ли вы показать больше кода? Когда вы отлаживаете код, в какой момент теряются значения? У вас есть ViewState для соответствующих элементов управления? Сохраняются ли какие-либо другие значения? Если да, то чем отличается контроль? – David

+0

, пожалуйста, проверьте выше комментарии – James

Смежные вопросы