2013-03-27 4 views
2

У меня есть флажок в DIV. DIV появляется как модальное всплывающее окно при нажатии кнопки. Затем пользователь проверяет любое количество элементов в checkboxlist и нажимает OK. Это скрывает div.Флажок в скрытом DIV

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

Благодаря

JQuery:

$(document).ready(function() { 
     $('#<%=txtLANG.ClientID %>').click(function() { 
      $("#overlay-back").dialog({ 
       resizable: false, 
       modal: true, 
       width: 500, 
       height: 400, 
       buttons: { 
        OK: function() { 
         GetLanguages(); 
         $(this).dialog("close"); 
        }, 
        Cancel: function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 
     }); 
    }); 

Сохранить метод в CodeBehind

private void Save() 
    { 
     List<string> lstItemsChecked = new List<string>(); 

     for (int i = 0; i < chkTopLanguages.Items.Count; i++) 
     { 
      if(chkTopLanguages.Items[i].Selected) 
       lstItemsChecked.Add(chkTopLanguages.Items[i].Value); 
     } 
     //stored proc call 
    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Save(); 
    } 

ASPX Код для DIV всплывающего окна и CheckBoxList

<div id="overlay-back" style="display:none;"> 
    <td rowspan="3" valign="top"> 
    <asp:CheckBoxList ID="chkTopLanguages" TextAlign="Right" runat="server" /> 
      <br /> 
    <asp:TextBox runat="server" ID="txtOtherLanguages" Text="Other Languages..."></asp:TextBox> 
    </td> 
</div> 
+0

Вы используете функцию javascript в OnClick кнопки сохранения? –

+0

нет, это кнопка ASP –

+0

Являются ли какие-либо элементы управления динамически созданными? –

ответ

0

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

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

0

Попробуйте установить AutoPostBack ложь:

<asp:CheckBoxList ID="chkTopLanguages" TextAlign="Right" runat="server" AutoPostBack="false" /> 

Для контроля CheckBoxList.

+0

спасибо за предложение, но все элементы по-прежнему приводят к .Selected = false, включая 3, которые я проверил –

+0

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