0

免责声明:我是 ASP.net 开发的新手,可能会错误地使用某些词。

我正在使用插件 jquery.DOMwindow.js,来源在这里:http ://swip.codylindley.com/jquery.DOMWindow.js

在我的页面“home.aspx”中,我打开了一个页面,上面有一些 asp:CheckBox 控件。这些控件在我的“DOMexample.aspx”页面上。

<a href="DOMexample.aspx" class="fixedAjaxDOMWindow" runat="server"> 
Check some check boxes. </a>

    <script type="text/javascript">
        $('.fixedAjaxDOMWindow').openDOMWindow({
            loaderImagePath: '../../images/ajax-loader.gif',
            height: 1200,
            width: 870,
            borderColor: '',
            borderSize: '0',
            overlayColor: '#000',
            overlayOpacity: '23',
            loader: 1,
            loaderHeight: 16,
            loaderWidth: 17,
            modal: 1,
            eventType: 'click',
            windowSource: 'ajax',
            windowHTTPType: 'get',
            windowPadding: 0

        });    
    </script>

在“DOMexample.aspx”上,我有一些复选框,选中后会在旁边显示一个下拉菜单。

<asp:CheckBox ID="chOptions" Text="Options" AutoPostBack="True" runat="server" />
<asp:DropDownList ID="ddOptions" runat="server" />

protected void Page_Load(object sender, EventArgs e)
{
    CheckSessionTimeout();
    chOptions.CheckedChanged += new EventHandler(this.chOptions_CheckedChanged);
    ddOptions.Items.Add("Select Option Level");
    ddOptions.Visible = false;

}

void chOptions_CheckedChanged(object sender, EventArgs e)
{
    if (chOptions.Checked == true)
        ddOptions.Visible = true;
    else
        ddOptions.Visible = false;
}

我的问题是,当我尝试开始调试时,我能够拉出我的 DOM 窗口,但是当我选中该框时,似乎浏览器正在尝试在整个浏览器中加载“DOMexample.aspx”(而不是刷新 DOM 窗口中的控件)。

4

1 回答 1

0

我必须通过 javascript 解决我的问题,因为如果我要修改 *.aspx.cs 中的控件,则需要一个 postBack 事件来创建我的问题(DOMwindow 页面在整个浏览器中加载)。

我创建了一个 javascript 函数“toggleOptions”,它将切换下拉框的可见性。

<asp:CheckBox ID="chOptions" 
  onclick="toggleOptions();"
  Text="Options"
  runat="server" />

function toggleOptions() {
    var chOpt = $get('<%=chOptions.ClientID  %>');
    if (chOpt.checked) {
        $get('<%=ddOptions.ClientID  %>').style.visibility = 'visible';
    } else {
        $get('<%=ddOptions.ClientID  %>').style.visibility = 'hidden';
    }
}

此外,我想让下拉加载不可见,但仍会被渲染(它需要被渲染才能让 javascript 访问它)。因此,在“head”部分中,一旦使用 jQuery .ready() 函数成功加载页面,我就调用了 toggleOptions:

<script type="text/javascript">
    $(document).ready(function () {
        toggleOptions();
    });
</script>

由于复选框 (chOptions) 最初呈现为未选中状态,toggleOptions 会注意到并隐藏 ddOptions。

于 2013-05-09T17:23:21.137 回答