jQuery 对话框和中继器中的复选框问题
本文关键字:复选框 问题 中继器 对话框 jQuery | 更新日期: 2023-09-27 18:35:25
所以我基本上已经把头撞在墙上一段时间了。 对不起,如果我在这里抛出太多代码,不知道更好的方法来解释它。 我有一个带有以下项目模板的中继器:
<ItemTemplate>
<div id='FileFrame<%#Eval("Id")%>' class="view">
<userControl:ConfigFiles ID=<%#Eval("Id")%> runat="server" />
</div>
</ItemTemplate>
一些为div 设置对话框的 jQuery。
$(document).ready(function() {
$(".view").dialog({
autoOpen: false,
title: "Configuration Files",
buttons: {},
height: 600,
width: 800,
open: function (type, data) { $(this).parent().appendTo("form"); }
});
});
以及更多打开对话框的jQuery。
$("#FileFrame"+ConfigId).dialog('open');
现在,用户控件在其他中继器中具有一堆复选框以及"下载复选框"按钮。 问题是,当我进行调试并单击按钮时,除非我最初在 aspx 页面上设置 Checked="true",否则所有复选框都不会被读取为选中状态。
这是后面代码中的一个片段,它未能完成我认为它应该做的事情。
foreach (RepeaterItem item in FilesRepeater.Items)
{
CheckBox box = item.FindControl("DownloadFileCheckBox") as CheckBox;
if (box.Checked) //<-- always false unless I set it to true in aspx,
// then it's always true
{/*do work here*/}
}
有什么建议吗?
我在某个时候遇到了类似的问题(回发不填充控件值)。问题生成对话框在表单标记之外。
用
$("#FileFrame"+ConfigId).parent().appendTo($("form:first"));
或类似的代码,用于在窗体内移动对话框代码
希望这会有所帮助。
好的,我不是 100% 确定到底发生了什么(这很可怕),但代码现在可以工作了。 我的直觉告诉我,在某个地方,一段 JavaScript 出了问题,导致浏览器放弃了以下 JS。 最重要的是,我在问题中发布的解决方案确实有效。
我认为主要问题是我正在调用的 JS 函数未加载或不在进行调用的范围内。 如果我发现更多,我一定会在这里发布。