Dyl*_*ers 6 user-interface tridion tridion2009
我有一个Tridion Date控件添加到我创建的GUI扩展.aspx页面.
我已将此添加到ASPX页面中
<c:Date id="AdjustDate" runat="server"
IsSeparateFields="false" AddClearButton="false" TabIndex="3"></c:Date>
Run Code Online (Sandbox Code Playgroud)
在我的.JS中我添加了以下内容
给我一个Tridion日期控件的句柄(选择日期值等)
c.AdjustDate = $ 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));
Run Code Online (Sandbox Code Playgroud)
但是 - 我似乎无法访问生成的对话框的高度,因为我无法添加任何事件来配合
我错过了与之相关的活动吗?
我试图用OK创建一个OK按钮的句柄
BtnDateOKSelect =
$controls.getControl($("html#DatePickerPopup.popup body center div#buttonContainer div#ButtonOk.tridion"),
"Tridion.Controls.Button");
Run Code Online (Sandbox Code Playgroud)
但引用(及其变体)返回undefined - 可能是因为这是在iframe中,所以脚本无法访问它?
有关计算我可以绑定的事件的任何指示?如何与这些事件(以及何时)结合?
谢谢
小智 3
打开对话框(模式)后无法调整其大小。我写了一个扩展,我遇到了类似的问题,当我的日期选择器位于我的模式对话框上时,它看起来很奇怪,所以我使我的对话框日期选择器更大。
但是我没有使用日期选择器控件,而是使用常规的 html 按钮。这里是代码:
因此,我检索按钮并添加处理程序以显示日期选择器:
c.BtnStartDate = $controls.getControl($("#startDate"), "Tridion.Controls.Button");
$evt.addEventHandler(c.BtnStartDate, "click", this.getDelegate(this._onStartDateButtonClicked));
Run Code Online (Sandbox Code Playgroud)
这是事件中的代码:
SetDateRange$_onStartDateButtonClicked(event) {
this._setDate(event, "#startDate");
};
Run Code Online (Sandbox Code Playgroud)
和 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();
};
Run Code Online (Sandbox Code Playgroud)
同样,它可能不是您场景的解决方案,但此示例展示了如何打开日期选择器对话框并使用它返回的值,而不使用“Tridion 日期选择器控件”。
希望这可以帮助。