2013-03-27 33 views
2

我有一个DIV内的CheckboxList。点击按钮时,DIV显示为模式弹出窗口。然后,用户检查复选框列表中的任意数量的项目,然后单击确定。这隐藏了div。隐藏DIV中的Checkboxlist

一旦用户点击主窗体上的保存按钮,我需要将参数传递给一个存储过程,根据checkboxlist中的哪些项目被点击,但当我运行保存代码时,它们总是被设置为未选中状态。我很想知道如何正确地做到这一点。

感谢

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"); 
        } 
       } 
      }); 
     }); 
    }); 

保存在代码隐藏方法

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

您是否在保存按钮的OnClick上使用了JavaScript函数? – 2013-03-27 19:32:27

+0

不,这是一个ASP按钮 – 2013-03-27 19:35:26

+0

是否有动态创建的控件? – 2013-03-27 19:37:07

回答

0

可能会发生这种情况,因为当您关闭弹出窗口时,弹出窗口上的控件无法访问。我不知道确切的原因,但你可以在javascript中创建一个数组变量。每当您选中或取消选中复选框时,在javascript的帮助下,您可以将该变量修改为所有变量设置或不设置。

我用模式弹出方式回来,只有这样的问题。 这种方法可能不是最佳的,但是可以肯定的工作。

0

尝试将AutoPostBack设置为false:

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

对于CheckBoxList控件。

+0

感谢您的建议,但所有项目仍然导致.Selected = false,包括3我已经检查 – 2013-03-27 19:52:36

+0

嗯,也许当div被隐藏时,值迷路了。你有没有在浏览器开发工具的源代码? – 2013-03-27 19:56:08