efn阿克说 发表于 2015-9-27 08:09:45

[SharePoint 2010 的那些事儿 – Excel Service]如何与EWA WebPart进行交互

  在小弟的上一篇博客初识 Excel Service JavaScript OM中向大家简单介绍了如何使用Excel Service JavaScript对象模型,在本篇博客中小弟我将继续此内容,在下面的文章中为大家来简单介绍下如何通过Excel Service JavaScript对象模型与EWA WebPart进行交互。
  第一步:监听EWA WebPart事件
  要监听EWA WebPart上的各种事件,首先要做的就是在ewaApplicationReady函数内添加各种事件监听器。在上篇博客中已经介绍过了,我们可以通过Ewa.EwaControl.getInstances().getItem(0)获得一个EwaControl对象,该对象支持多种类型的事件监听器,如下所示。
  add_gridSynchronizedOnce
  add_activeCellChanged
  add_activeSelectionChanged
  add_applicationReady
  add_enteredCellEditing
  add_gridSynchronized
  在本例中将使用add_activeCellChanged()方法,以监听工作簿中改变被选中的单元格事件。
  



function ewaApplicationReady()
{
  ewa = Ewa.EwaControl.getInstances().getItem(0);
  setTimeout(forceRecalc, 300000);
  ewa.add_activeCellChanged(cellChanged);
}

  


  此时当我们选择不同的单元格时,EWAControl对象就将调用我们刚刚所写的这个cellChanged()方法。
  



function cellchanged(rangeArgs)
{
}
  


  其中的rangeArgs参数包括我们所选中的单元格的各种信息,它有三个方法,分别是:
  getRange() -将返回所选中的单元格对象
  getWorkbook()-返回当前EWA WebPart所加载的Excel工作表对象
  getFormattedValues()-返回所选中的单元格中的值
  在本例中将使用getFormattedValues()方法获得单元格的值,并以此值来切换不同的图片。
  第二步:在内容编辑器中添加img标签来展示图片
  在上篇博客中我们在内容编辑器中添加了一段用于定时刷新EWA WebPart的JavaScript脚本,现在继续向其中添加一个<img>标签,用来展示网站中的图片,在稍后的内容中将添加另一段JavaScript脚本来改变这个标签的src属性。
  



<img id="dashboardPersonPicture" />
  


  第三步:根据单元格的值切换图片
  接下来就是向刚才的cellchanged方法中添加用于切换图片的代码了。
  



function cellchanged(rangeArgs)
{
  var img = document.getElementById("dashboardPersonPicture");
  img.src = ".. /Images1/ " + encodeURIComponent(rangeArgs.getFormattedValues()) + ".jpg";
}
  


  这段代码将获得我们所选中的单元格的值,并根据该值合成图片地址,进而设置img标签的src属性,以此来实现根据单元格的值切换图片的效果。
  下面来看下具体的效果。

  现在出现一个问题,当点击列头时图片库中是没有与其对应的图片的,就像下图所示。这时我们就需要在切换图片前先判断所选中的单元格是否为列头。

  第四步:再看单元格对象
  要验证所选单元格是否为列头,可以通过rangeArgs参数获得所选的单元格对象,并以此对象的信息来验证该单元格,如果验证通过的话再切换图片。
  



function cellchanged(rangeArgs)
{
  var sheetName = rangeArgs.getRange().getSheet().getName();
  var col = rangeArgs.getRange().getColumn();
  var row = rangeArgs.getRange().getRow();
  var value = rangeArgs.getFormattedValues();
  if (sheetName == "Sheet1" && col == 1 && row > 1 && value && value != "")
  {
    var img = document.getElementById("dashboardPersonPicture");
    img.src = ".. /Images1/ " + encodeURIComponent(rangeArgs.getFormattedValues()) + ".jpg";
  }
}
  


  在上面的代码中使用了getSheet().getName() , getColumn() 和 getRow()这三个Range对象的方法,通过它们获得单元格在工作簿中的位置信息,从而完成对单元格的验证。
  通过本篇博客相信各位看官已经初步了解了如何使用EWA JavaScript OM添加事件处理程序来与EWA WebPart的进行交互,下篇文章将介绍如何通过EWA JavaScript OM向Excel 工作簿中写入值,希望各位能够继续关注我的博客,在此祝各位圣诞节快乐~~~
页: [1]
查看完整版本: [SharePoint 2010 的那些事儿 – Excel Service]如何与EWA WebPart进行交互