gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:26:52 27 4
gpt4 key购买 nike

我在创建的 GUI 扩展 .aspx 页面中添加了一个 Tridion 日期控件。

我已将此添加到 ASPX 页面

<c:Date id="AdjustDate" runat="server" 
IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date>

在我的 .JS 中,我添加了以下内容
  • 给我一个 Tridion 日期控件的句柄(以选择日期值等)

    c.调整日期 =
    $controls.getControl($("#AdjustDate"),
    "Tridion.Controls.Date")
  • 捕获日期中的更改(用户在模态对话框中选择“确定”后)

    $evt.addEventHandler(c.AdjustDate, "change",
    this.getDelegate(this._onHighlightDateChange));

  • 我捕获事件并根据所选日期执行一些更新。

    但是,我的 GUI 扩展对话框的高度小于显示模式对话框时的高度。 我要 当用户单击 Select Date 时调整我的 ASPX 对话框的大小并显示模态对话框。

    我现在已经捕获了用户点击 Select Date 的事件。按钮
    c.BtnDateSelect = $controls.getControl($("#AdjustDate_selectbutton"),
    "Tridion.Controls.Button");
    $evt.addEventHandler(c.BtnDateSelect, "click",
    this.getDelegate(this._onDateButtonClicked));

    但是 - 我似乎无法访问结果对话框的高度,因为我无法添加任何事件来配合
  • 对话框本身的打开
  • 用户单击“确定”或“取消”(再次调整高度)或
  • 模态对话框正在关闭

  • 我是否错过了要与之相关的事件?

    我尝试使用创建 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 日期选择器控件”的情况下打开日期选择器对话框并使用它返回的值。

    希望这可以帮助。

    关于user-interface - Tridion 日期选择器 - 访问事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691405/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com