如何为像Tridion控件这样的ASP控件创建事件处理程序?

SDL*_*ner 3 tridion tridion-2011

我有一个aspx页面PopupReference.我有Tridion控制按钮和几个asp控件,如asp:ddSelectOption(Dropdown).

所以在Popupreference.js中,当我们为Tridion按钮创建事件处理程序时,我正在尝试为我的asp控件创建相同的内容,如下所示:

这是Tridion按钮:

c.InsertButton = $controls.getControl($("#InsertButton"), 
                                      "Tridion.Controls.Button");
Run Code Online (Sandbox Code Playgroud)

这是我的下拉菜单:

c.ddSelectOption = $("#ddSelectOption");
Run Code Online (Sandbox Code Playgroud)

tridion按钮的事件处理程序:

$evt.addEventHandler(c.InsertButton, "click", this.getDelegate(this._execute));
Run Code Online (Sandbox Code Playgroud)

我的下拉列表的事件处理程序:

$evt.addEventHandler(c.ddSelectOption, "onselectedindexchanged",
                     this.getDelegate(this._ondropdownitemchanged));
console.log('eventhandler created');
Run Code Online (Sandbox Code Playgroud)

我正在调用这个函数:

RTFExtensions.Popups.PopupReference.prototype._ondropdownitemchanged = 
                      function PopupReference$_ondropdownitemchanged(event) {
  Console.log('Initializing inside dropdown...');
};
Run Code Online (Sandbox Code Playgroud)

但我无法在任何地方看到最后一个日志,我认为它没有进入函数内部ondropdownitemchanged(event).有没有人知道如何才能实现这一目标?

joh*_*ter 8

我怀疑你的onselectedindexchanged活动需要成为一个change

我使用下拉列表实现了类似的功能,以下是我的代码中的部分内容.我希望这有助于您找到解决方案:

1)在html/aspx页面中:

<select id="systemDD"></select><label for="systemDD">Select a system</label>
Run Code Online (Sandbox Code Playgroud)

2)在你的JavaScript中:

var p = this.properties;
var c = p.controls;

// the the drop down items
c.SystemDropDown = $("#systemDD");
Run Code Online (Sandbox Code Playgroud)

添加事件处理程序:

$evt.addEventHandler(c.SystemDropDown, "change",
                     this.getDelegate(this._systemDropDownChanged));
Run Code Online (Sandbox Code Playgroud)

方法:

EditorName.prototype._systemDropDownChanged = 
function EditorName$Extensions$EditorName$_systemDropDownChanged() {
    var p = this.properties;
    var c = p.controls;
    // get the selected system value
    var selectedSystem = $j(c.SystemDropDown).val(); 

};
Run Code Online (Sandbox Code Playgroud)

我会通过以下方式解决它:

  1. 获取下拉元素时,请检查是否将其作为对象
  2. 尝试将onselectedindexchanged更改为"更改"
  3. 强烈的酒精饮料:)

祝好运

  • 我不会直接在JS中调用CoreService,而是创建一个调用它的模型.阅读Dom关于这个主题的博客文章 - http://www.dominic.cronin.nl/weblog/why-should-your-tridion-gui-extension-model-have-its-own-service-layer-on机顶的最核心业务 (2认同)