所以我基本上已经把头撞在了墙上一段时间了。对不起,如果我在这里抛出太多代码,不知道更好的解释方法。我有一个带有ItemTemplate的转发器:
<ItemTemplate>
<div id='FileFrame<%#Eval("Id")%>' class="view">
<userControl:ConfigFiles ID=<%#Eval("Id")%> runat="server" />
</div>
</ItemTemplate>
一些jQuery设置了div的对话框。
$(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*/}
}
有什么建议吗?
答案 0 :(得分:0)
我有一些类似的问题(回发不会填充控制值)。生成的问题对话框在表单标记之外。
使用
$("#FileFrame"+ConfigId).parent().appendTo($("form:first"));
或类似的代码,用于在窗体
中移动对话框代码希望这会有所帮助。
答案 1 :(得分:0)
好吧,我不是100%确定究竟发生了什么(这是可怕的),但代码现在有效。我的直觉说某个地方出现了一些错误,导致浏览器放弃了以下的JS。最重要的是,我在问题中发布的解决方案确实有效。
我认为主要的问题是我正在调用的JS函数没有被加载或者不在调用的范围内。如果我发现更多,我一定会在这里发布。