0

我有一个 Word 插件 (API 1.3) 项目,我可以在其中插入表格并使它们成为内容控件。我使用以下代码来识别用户是否在表格内单击或选择了其中的任何单元格。

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、rowCount、colCount,就像在 selectionChanged 的​​绑定事件处理程序中一样?

4

1 回答 1

1

感谢分享这个问题。您的代码有 2 个问题:

  1. 您正在订阅文档选择更改,但您确实想要进行绑定选择更改。请注意,坐标仅在表绑定上返回。
  2. 一旦你有一个表绑定并订阅了正确类型的事件,你需要在处理程序上添加事件参数来访问你需要的值。

查看以下代码以了解如何创建表绑定以及如何在处理程序上使用 eventArgs 来获取您需要的信息(另请注意,如果您在中定义了标题,您将在充当标题的行上获得未定义桌子):

 Office.context.document.bindings.addFromSelectionAsync(Office.BindingType.Table, function (result) {
            if (result.status == Office.AsyncResultStatus.Succeeded) {
                // after creating the binding i am adding the handler for the BindingSelectionChanged, check out eventArgs usage....
                var binding = result.value;
                binding.addHandlerAsync(Office.EventType.BindingSelectionChanged, function (eventArgs) {
                    app.showNotification('Selection Coordinates: ' + eventArgs.startColumn + " " + eventArgs.columnCount + " " + eventArgs.startRow + " " + eventArgs.rowCount);
                });
            }
        });

希望这能让你朝着正确的方向前进。谢谢!胡安。

于 2016-09-23T18:41:43.910 回答