快捷搜索:

SharePoint:扩展DVWP - 第31部分:在Insert模版上通过

我们已经构建了一个办理规划,用于实现组织对员工的跟踪。 我们已经重排了DVWP的结构,从新编写了表单操作链接的法度榜样,以致为其通报了一些事情流变量参数,添加级联下拉列表框,还创建一个备用编辑模板,以便我们能够将编辑和删除操作记录到审计列表中。

从近来的几篇文章开始,为我们进入了扩展DVWP 系列的高潮部分 。我们现在有多个页面(每一个对应一个位置/经理)。 每个页面都可以包孕多个DVWP,可能是由于一个经理要治理多个地点和/或由于我们必要跟踪和谋略“其他”类型的员工。

简化用户体验

我们已经为每个位置创建了零丁的页面,现在造访每个页面的经理盼望添加新的雇员时默认就属于他自己的位置,这很合理。是以,我们必要基于当前所在的页面设置Location的默认值。

当然,我们将应用jQuery:

1. 在 DVWP 所在的页面上, 经由过程以下随意率性一种要领进入编辑模式:

i. 点击网站操作 - > 编辑页面 ,或

ii. 在页面的URL后面添加 ?PageView=Shared&ToolPaneView=2

2. 假如你曾经随着文章的步骤做并实现了级联下拉列表框,那么请打开现有的内容编辑器Web部件(CEWP),让我们斟酌一下若何能够设置一些默认值。

(注:假如你还没有添加级联下拉列表框,请跳到第3步,轻忽下拉框,但请把稳第2-3行的代码。)

下面是在我的场景中样子:

3.第一个SPCascadeDropdowns调用是根据Location级联Group。 让我们先设置Location,以便可以根据预设的Location来设置Group下拉框:

$(document).ready(function() {

$("select[title=Location]").val("ACB");$("input[title=Location]").val("ACB").next("img").trigger("click");

$().SPServices.SPCascadeDropdowns({relationshipWebURL: "/operations",

relationshipList: "LocGroup",relationshipListParentColumn: "LocDept",

relationshipListChildColumn: "Group12",relationshipListSortColumn: "Group12",

parentColumn: "Location",childColumn: "Group"

});.

..

});

看起来我们设置了两次,但实际上我们的处置惩罚了两个不合的衬着控件要领:一种是在Internet Explorer(IE)里,另一种是在Firefox(FF)里。(留意:我还没有在Safari或Chrome浏览器里进行测试,但我估计这两种要领基础上可以覆盖所有的场景。)

i. 在FF里设置默认值很简单:找到select并设置.val()即可。Firefox会自动进行后续处置惩罚。

$("select[title=Location]").val("ACB");

ii. 在IE里,其事情要领有点不合。 假如下拉项数大年夜于20的话,IE的衬着会变成:一个input控件和一些其他控件,经由过程编程要领连接在一路。

在 IE浏览器里,它会变为一个input控件,我们必须“点击”下拉箭头,才能使其真正在表单中被设置,尤其是在级联下拉列表框中进行调用时。

$("input[title=Location]").val("ACB").next("img").trigger("click");

在这种环境下,在设置.val()后,我们定位到接下来的兄弟标记,是一个img控件(.next("img"))并触发其click事故。

4. 对付主要的Location选项卡,这便是我们为实现默认值要做所有事情。 为了确保操作的顺畅,当在IE中把下拉框衬着为input时还有一小点必要留意:

$("input[title=Employee]").focus();

});

这样就将焦点设置回Employee文本框,以避免把经由过程代码要领展开的下拉框选项留在页面上。

休斯敦,我们有麻烦了

上面的脚本的在页面上只有一个DVWP时运行优越,由于这时页面上只有一个名为Location的控件。然则,我们不停允诺页面上可以放置跨越一个的DVWP。

假如我们在多个DVWP的环境下运行这个脚本,它将为页面中天生的每一个INSERT模版设置"Location”为ACB。 在非正式员工的环境下,我们实际上盼望Location设置为响应的雇员类型,其Group设置为响应的主站点。

(例如:一小我可能会根据必要在不合的地点事情,可以看作是兼职。他可能天天事情在不合的地点。此中一个地点(ACB)可以看作是他的主站点。对付这种环境,我们必要要将他的Location设为PRN,这样我们可以谋略出总的PRN人数,并且与同一地区中的正式员工(FTE)区分开来。同时,我们应用Group来标识他的主站点为 ACB。)

然则,上面的脚本无法满意要求。

下一次:当我们继承扩展DVWP时 ,将探求一个法子来区分哪些DVWP是我们要操作的,以便我们可以设置响应的默认值。

参考资料

SharePoint:Extending the DVWP-Part 31:Filling in Default Data on the insert Template with jQuery

您可能还会对下面的文章感兴趣: