사용자가 통합 문서에서 선택한 범위 또는 셀에 이벤트 처리기를 추가하고 싶습니다. 사용자가 다른 셀 또는 범위를 선택 하면 일부 작업을 체계적으로 수행해야합니다.
이 참조를 보고 있지만 코드를 전체 추가 기능에 통합 할 위치를 모르겠습니다.
예를 들어, 내 Home.html
, 나는
<div id="content-main">
<div class = "padding" id="message"></div>
<div class="padding">
<button class="ms-Button" id="button">Click me!</button>
</div>
</div>
여기 있습니다 Home.js
:
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#button').click(activateEventHandler);
});
};
function onBindingSelectionChanged(eventArgs) {
write(eventArgs.binding.id + " has been selected.");
}
function write(message) {
document.getElementById('message').innerText += message;
}
function activateEventHandler() {
Excel.run(function(ctx) {
var selectedRange = ctx.workbook.getSelectedRange();
selectedRange.addHandlerAsync(Office.EventType.BindingSelectionChanged, onBindingSelectionChanged);
return ctx.sync()
}).then(function() {
console.log("done");
}).catch(function(error) {
...
}
});
}
})();
버튼이 리스너를 활성화 할 것으로 예상합니다. 그런 다음 사용자가 다른 셀이나 범위를 선택할 때마다 메시지가 작업 창에 체계적으로 추가됩니다. 그러나 위의 코드 Error: TypeError: selectedRange.addHandlerAsync is not a function
는 줄에서 오류 를 발생 시킵니다 selectedRange.addHandlerAsync(...
.
사실,이 코드가 그렇게 구성되어야하는지 확신 할 수 없습니다 ... 누구든지 내 작업을 수행하기 위해 코드를 수정하는 방법을 알고 있습니까?
오류의 원인은 Range 개체에서 addHandlerAsync 함수를 호출하려고하기 때문입니다. 그러나 핸들러는 Binding 개체 또는 Document 개체에만 추가 할 수 있습니다. 당신이 선택하는 것은 정확히 당신이 성취하고자하는 것에 달려 있습니다. 귀하의 경우에는 특정 범위 에서 선택을 수신하려는 것이 아니라 실제로 문서의 어느 곳에서나 선택을 수신하려고한다고 생각합니다 . 따라서 실제로 DocumentSelectionChanged 이벤트를 사용합니다 .
(function() {
"use strict";
Office.initialize = function(reason) {
$(document).ready(function() {
app.initialize();
$('#button').click(activateEventHandler);
});
};
function onMySelectionChanged(eventArgs) {
write(eventArgs.binding.id + " has been selected.");
doStuffWithNewSelection();
}
function write(message) {
document.getElementById('message').innerText += message;
}
function activateEventHandler(){
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, onMySelectionChanged);
}
function doStuffWithNewSelection() {
Excel.run(function(ctx) {
var selectedRange = ctx.workbook.getSelectedRange();
// do other stuff with the selection as you wish, like read and display
}).then(function() {
console.log("done");
}).catch(function(error) {
...
}
});
}
})();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다