如何在其父RAD窗口上手动显示子radwindow?

时间:2015-10-07 03:23:25

标签: javascript asp.net dialog resize radwindow

我正在创建两个radwindow对话框:父对象及其子对象。 父radwindow的大小为1082x630

儿童radwindow的大小为1500x900

在父radwindow对话框中,当我点击按钮" Show Child Dialog"时,将显示其子radwindow。

这里的问题是子对话框的大小比其父对象大。所以,我想调整子对话框的大小,并将其显示在父对话框的中心。

这是我在Javascript中的代码,我用它来手动调整子对话框的大小。为了居中对话框,我还使用了childRadWindow.left和childRadWindow.top。 但是,它不能像我预期的那样工作。子对话框不会放在其父对象的中心。

请参考我预期的实际图像和我的代码来解决问题。

我的预期结果: enter image description here

实际结果: enter image description here

这是我手动调整子对话框大小的代码。我把它放在子对话框* .aspx

<script type="text/javascript">
     $(document).ready(function () {
         resizeRWndDialog();
     });       
</script>
function resizeRWndDialog() {
    var radWindows = [];
    var radWindow = GetRadWindow();
    while (true) {
        if (radWindow != undefined && radWindow != null) {
            radWindows.push(radWindow._popupElement);
            radWindow = radWindow.BrowserWindow.GetRadWindow();
        } else {
            break;
        }
    }
    var numsOfRadWindow = radWindows.length - 1;
    if (numsOfRadWindow > 0) {
        for (var i = numsOfRadWindow; i > 0; i--) {
            var parentWindow = radWindows[i];
            var parentWidth = parentWindow.clientWidth;   //parentWidth =1082
            var parentHeight = parentWindow.clientHeight; //parentHeight = 630

            var chidWindow = radWindows[i - 1];
            var childWidth = chidWindow.clientWidth;    //childWidth = 1500
            var childHeight = chidWindow.clientHeight;  //childHeight = 900

            var rateMinWidth = 0,
                rateMinHeight = 0,
                rateMaxWidth = 0,
                rateMaxHeight = 0;

            if (chidWindow.style.minWidth != "") {
                rateMinWidth = parseInt(chidWindow.style.minWidth) / childWidth;
            }

            if (chidWindow.style.minHeight != "") {
                rateMinHeight = parseInt(chidWindow.style.minHeight) / childHeight;
            }

            if (chidWindow.style.maxWidth != "") {
                rateMaxWidth = parseInt(chidWindow.style.maxWidth) / childWidth;
            }

            if (chidWindow.style.maxHeight != "") {
                rateMaxHeight = parseInt(chidWindow.style.maxHeight) / childHeight;
            }

            if ((parentWidth - 40) > 0 && childWidth >= parentWidth - 40) {
                childWidth = parentWidth - 40;    //parentWidth = 1082, childWidth = 1042
            }

            if ((parentHeight - 80) > 0 && childHeight >= parentHeight - 80) {
                childHeight = parentHeight - 80;    //parentHeight = 630, childHeight = 550
            }

            setSizeRWndDialog(chidWindow.getElementsByClassName("rwTable")[0], rateMinWidth * childWidth, rateMinHeight * childHeight, rateMaxWidth * childWidth, rateMaxHeight * childHeight, childWidth, childHeight);
            setSizeRWndDialog(chidWindow, rateMinWidth * childWidth, rateMinHeight * childHeight, rateMaxWidth * childWidth, rateMaxHeight * childHeight, childWidth, childHeight);

            chidWindow.left = Math.round((parentWidth - childWidth) / 2, 0) + "px";
            chidWindow.top = Math.round((parentHeight - childHeight) / 2, 0) + "px";
            chidWindow.focus();
            radWindows[i - 1] = chidWindow;
        }
    }
}

function setSizeRWndDialog(element, minWidth, minHeight, maxWidth, maxHeight, width, height) {
    if (minWidth != 0 && minHeight != 0) {
        element.style.minWidth = minWidth + "px";
        element.style.minHeight = minHeight + "px";
    }

    if (maxWidth != 0 && maxHeight != 0) {
        element.style.maxWidth = maxWidth + "px";
        element.style.maxHeight = maxHeight + "px";
    } else {
        element.style.maxWidth = width + "px";
        element.style.maxHeight = height + "px";
    }

    element.style.width = width + "px";
    element.style.height = height + "px";
}

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,伙计们。 我刚刚在resizeRWndDialog()的末尾添加了一行作为下面的代码片段:

function resizeRWndDialog() {
    //.........
    if (numsOfRadWindow > 0) {
        //...........
    }
    GetRadWindow().center(); // >> Just use this line
}