3

所以我现在基本上一直在碰壁。对不起,如果我在这里抛出太多代码,不知道更好的方法来解释它。我有一个带有 ItemTemplate 的中继器:

<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*/}
    }

有什么建议么?

4

2 回答 2

0

好的,我不能 100% 确定到底发生了什么(这很可怕),但代码现在可以工作了。我的直觉说,某处某处,一段 JavaScript 出了问题,导致浏览器放弃了下面的 JS。底线是我在问题中发布的解决方案确实有效。

我认为主要问题是我正在调用的 JS 函数没有被加载或不在调用范围内。如果我发现更多,我一定会在这里发布。

于 2012-06-04T14:26:27.603 回答
0

某个时候我遇到了类似的问题(回发不填充控制值)。问题是生成的对话框在表单标签之外。

利用

$("#FileFrame"+ConfigId).parent().appendTo($("form:first"));  

或类似的代码来移动表单内的对话框代码

希望这会有所帮助。

于 2012-05-25T00:32:45.243 回答