У меня есть проект надстройки над Word (API 1.3), где я могу вставлять таблицы и создавать элементы управления контентом. Я использую следующий код, чтобы узнать, нажимает ли пользователь внутри таблицы или выбирает любую из своих ячеек.Как получить выбранные строки и индекс столбца и число в Word JS
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged,
function() {
Word.run(function(ctx) {
var ctrl = ctx.document.getSelection().parentContentControl;
return ctx.sync()
.then(function() {
if (!ctrl.isNull) { // found - clicked inside the control
// ... load some properties, ...
ctrl.load('tag'); // How to get startRow, startCol, rowCount, colCount?
ctx.sync()
.then(function() {
console.log(ctrl.tag);
}).catch(function(err) {
console.log(err);
});
}
}).catch(function(err) {
console.log(err);
});
});
});
Есть ли способ, чтобы получить StartRow, startCol, сверку, ColCount отсюда, как в обязательных обработчиков событий для SelectionChanged?
Я использую элементы управления содержимым для таблиц, и у меня нет привязок для них. Означает ли это, что если пользователь нажимает внутри таблицы, мне нужно найти элемент управления содержимым, который прикреплен к таблице, выбрать всю таблицу, сделать привязку с нее, а затем попросить пользователя снова выбрать ячейки, чтобы я мог получить столбцы и строки? Наличие привязки и контроля содержимого на столе в то же время звучит как перебор. –
Если вы хотите получать события, вам нужно создать привязку, а в Word - создание элемента управления контентом. Обратите внимание, что привязка - это то, что вам нужно сделать только один раз, в этом случае, похоже, в то время, когда вы действительно вставляете таблицу в документ. После того, как вы создадите привязку и обработчики событий, событие просто запустится, вам не нужно будет предлагать пользователю повторно выбирать ячейки. –
Я добавляю таблицу с таблицей «var table = ctx.document.body.insertTable (значение.length, значение [0] .length,« end », value); var myContentControl = table.insertContentControl(); ctx.sync() '. Затем найдите привязки в документе с помощью 'doc.bindings.getAllAsync', и у меня их нет. Нужно ли мне использовать 'doc.bindings.addFromSelectionAsync' в момент создания контроля контента, чтобы ваш предлагаемый способ работы? –