如何在Word JS中获取选定的行和列索引和计数

时间:2016-09-20 18:41:04

标签: javascript office365 office-js word-addins

我有一个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的绑定事件处理程序中一样?

1 个答案:

答案 0 :(得分:1)

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

  1. 您正在订阅文档选择更改,但您确实想要进行绑定选择更改。请注意,坐标仅在表绑定上返回。
  2. 一旦你有一个表绑定并订阅了正确类型的事件,你需要在处理程序上添加事件args以访问你需要的值。
  3. 查看以下代码,了解如何创建表绑定以及如何使用处理程序上的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);
                    });
                }
            });
    
    
    

    希望这会让你朝着正确的方向前进。谢谢! 涓。