我在DIV中有一个CheckboxList。单击按钮时,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();
}
DIV弹出窗口和CheckBoxList的ASPX代码
<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 :(得分:0)
尝试将AutoPostBack设置为false:
<asp:CheckBoxList ID="chkTopLanguages" TextAlign="Right" runat="server" AutoPostBack="false" />
对于CheckBoxList控件。
答案 1 :(得分:0)
可能会发生这种情况,因为当您关闭弹出窗口时,弹出窗口上的控件无法访问。我不知道确切的原因,但你可以在javascript中创建一个数组变量。每当您选中或取消选中复选框时;在javascript的帮助下,您可以将该变量修改为所有变量的设置。
我长时间使用模态弹出方式,只有这样的问题。 这种方法可能不是最佳方法,但肯定会有效。