User interface Tridion日期选择器-访问事件

User interface Tridion日期选择器-访问事件,user-interface,tridion,tridion2009,User Interface,Tridion,Tridion2009,我有一个Tridion日期控件添加到我创建的GUI扩展.aspx页面 我已将此添加到ASPX页面中 <c:Date id="AdjustDate" runat="server" IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date> 但是,我似乎无法访问生成的对话框的高度,因为我无法添加任何事件来连接 对话框本身的打开 用户单击确定或取消(再次调整高度)或 正在关闭的模式对话框 我是

我有一个Tridion日期控件添加到我创建的GUI扩展.aspx页面

我已将此添加到ASPX页面中

<c:Date id="AdjustDate" runat="server" 
IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date>
但是,我似乎无法访问生成的对话框的高度,因为我无法添加任何事件来连接

  • 对话框本身的打开
  • 用户单击确定或取消(再次调整高度)或
  • 正在关闭的模式对话框
  • 我是否错过了与之相关的活动

    我尝试使用创建OK按钮的句柄

    BtnDateOKSelect = 
    $controls.getControl($("html#DatePickerPopup.popup body center div#buttonContainer div#ButtonOk.tridion"),
     "Tridion.Controls.Button");
    
    但是引用(及其变体)返回未定义-可能是因为它在iframe中,所以脚本无法访问它

    有没有关于我可以参与哪些活动的建议? 如何参与这些活动(以及何时)


    谢谢

    您无法在对话框(模式)打开后调整其大小。我写了一个扩展,我有一个类似的问题,当我的日期选择器在我的模态对话框上时,它看起来很奇怪,所以我把我的对话框日期选择器变大了

    然而,我没有使用日期选择器控件,而是使用常规的html按钮。代码如下:

    因此,我检索按钮并添加处理程序以显示日期选择器:

    c.BtnStartDate = $controls.getControl($("#startDate"), "Tridion.Controls.Button");
    $evt.addEventHandler(c.BtnStartDate, "click", this.getDelegate(this._onStartDateButtonClicked));
    
    这是事件中的代码:

    SetDateRange$_onStartDateButtonClicked(event) {    
        this._setDate(event, "#startDate");
    
    };
    
    和setDate函数:

    SetDateRange.prototype._setDate = function SetDateRange$_setDate(event, controlSelector) {
        var p = this.properties;
        var currentDate = new Date();
        var c = p.controls;
    
    
        p.datePickerPopup = $popup.create(
            $cme.Popups.DATE_PICKER.URL, {
                width: 550,
                height: 350
            },
            {
                date: currentDate,
                popupType: Tridion.Controls.Popup.Type.MODAL_IFRAME
            }
        );
    
        function SetDateRange$DatePicker$onPopupCanceled(event) {
            if (p.datePickerPopup) {
                p.datePickerPopup.dispose();
                p.datePickerPopup = null;
            }
        }
    
        function SetDateRange$DatePicker$onPopupSubmitted(event) {
            var value = event.data.date;
            if (value) {
                var value = new Date(value);
    
                value = $localization.getFormattedDateTime(value, Tridion.Runtime.LocaleInfo.fullDateTimeFormat);
                jQuery(controlSelector).trigger('setdate', [value]);
            }
            p.datePickerPopup.dispose();
            p.datePickerPopup = null;
        }
    
        $evt.addEventHandler(p.datePickerPopup, "unload", SetDateRange$DatePicker$onPopupCanceled);
        $evt.addEventHandler(p.datePickerPopup, "submit", SetDateRange$DatePicker$onPopupSubmitted);
        $evt.addEventHandler(p.datePickerPopup, "close", SetDateRange$DatePicker$onPopupCanceled);
    
        p.datePickerPopup.open();
    };
    
    同样,它可能不是您的场景的解决方案,但是这个示例显示了如何打开日期选择器对话框并使用它返回的值,而不使用“Tridion日期选择器控件”


    希望这能有所帮助。

    我们不要在标签上过火:这是Tridion 2009或Tridion 2011的,似乎是后者。这太棒了,Jaime谢谢。。。我曾考虑过模拟我自己的按钮和日期保持区,现在我更确信这是一条路要走。也谢谢你的例子!
    SetDateRange.prototype._setDate = function SetDateRange$_setDate(event, controlSelector) {
        var p = this.properties;
        var currentDate = new Date();
        var c = p.controls;
    
    
        p.datePickerPopup = $popup.create(
            $cme.Popups.DATE_PICKER.URL, {
                width: 550,
                height: 350
            },
            {
                date: currentDate,
                popupType: Tridion.Controls.Popup.Type.MODAL_IFRAME
            }
        );
    
        function SetDateRange$DatePicker$onPopupCanceled(event) {
            if (p.datePickerPopup) {
                p.datePickerPopup.dispose();
                p.datePickerPopup = null;
            }
        }
    
        function SetDateRange$DatePicker$onPopupSubmitted(event) {
            var value = event.data.date;
            if (value) {
                var value = new Date(value);
    
                value = $localization.getFormattedDateTime(value, Tridion.Runtime.LocaleInfo.fullDateTimeFormat);
                jQuery(controlSelector).trigger('setdate', [value]);
            }
            p.datePickerPopup.dispose();
            p.datePickerPopup = null;
        }
    
        $evt.addEventHandler(p.datePickerPopup, "unload", SetDateRange$DatePicker$onPopupCanceled);
        $evt.addEventHandler(p.datePickerPopup, "submit", SetDateRange$DatePicker$onPopupSubmitted);
        $evt.addEventHandler(p.datePickerPopup, "close", SetDateRange$DatePicker$onPopupCanceled);
    
        p.datePickerPopup.open();
    };