infopath 表单 数据库表单嵌入网页,打印表单如何设置不打印文本边框

我们花在填写表单上的时间越少,则可用于完成其它任务的时间就越多。同时,由于填写一张表单并不会花费太多时间,实际上还提高了表单填写人员的积极性。本文将为你提高一下提高表单填写速度和准确度的小技巧,以便使你设计的表单完全提速。
本文将包括
1、使用默认值
2、使用上下文获取当前日期和当前用户
设置默认值
当问题的一个答案比其他的答案更普遍时,可以将其设置为初始值,或称为默认值。该值会在表单打开后自动填写,表单填写者仍然可以修改它。
你可以通过双击该控件并点击功能区中出现的属性标签下的默认值图标来设置默认值。
假设船艇租赁表单中,当船租出去时,雇员需要填写是谁经手的这支船,从什么时候开始租,什么类型的船,船艇编号以及客户信息。
由于出租船的地方大部分都是24英尺的船,所以我们的将规格的默认值设为24英尺。这样,雇员在绝大多数情况下就不用再填写该字段了。为了给规格设置默认值,首先双击规格下拉框,选择属性标签中的默认值。在弹出的对话框中输入默认值。我们可以为文本框,复选框,单选按钮等等很多的控件通过这种方式设置默认值。
当船被租时,我们需要记录办理此次出租的雇员是谁以及出租出去的开始时间。通常情况下,出租开始时间都是当天。我们想要为日期字段设置默认值为当前日期。
为了设置日期选择控件的默认值为当天,首先双击该控件,在功能区的属性标签中,点击&默认值&。然后选择右侧的函数生成器。
选择&插入函数&,在&日期和时间&分类下找到 now函数,双击。点击确定,回到表单。现在 ,当用户打开该表单时,将自动填写当天的日期。
当使用today()或now()时,表单在每次打开时更新该日期值。除非取消勾选&重新计算公式时刷新值&。记住一定要取消这个勾。
today() 与now()
today()和now()都可以用于设置日期选择器的默认值。然而,你的表单类型决定了你最后选择哪个。
- 当你有一个仅包含日期的字段时用today()
- 当你的需要一个日期时间类型的字段时用now()
一般情况下,当用于SharePoint 列表表单时,用now()。当用于表单库或者是纯填写目的的表单,用today(),除非你曾将数据格式修改为日期时间类型。
设置当前用户
为用户/组选择器设置默认值必须通过字段任务面板才行。可以通过点击功能区的数据标签下的&显示字段&来调出字段面板。然后展开用户/组选择器字段(本例中为outBy)。右键点击&AccountId&并选择&属性&
在默认值里,选择函数生成器并输入userName()。
这里也要确保取消勾选了&重新计算公式时刷新值&,否则该规则只运行一次,而不会在每次打开该表单时都执行。点击确定。
对DisplayName(可选)重复相同的过程,以便得到最佳效果。现在,人员选择器的值将默认为打开该表单的用户。
当我们在SharePoint中加载该表单时,日期,规格和经手人字段都已经填好了。在已经完成了一半字段的基础上,负责租船的雇员只需用很少的时间就能办好船艇的出租了。
希望这些小技巧能够使你节省填写表单的时间!
阅读(...) 评论()扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
InfoPath 2007表单使用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口软件与服务//
InfoPath制作出差日程表单
  三、设计表单
  1.插入表格
  运行InfoPath,在“开始使用”界面上选择“设计表单模板”,接着,单击“空白”,单击“确定”。InfoPath设计界面即可打开。如图1所示。
  图1插入表格
  默认地,界面右边有一个“设计任务”栏,其下包括:版式、控件、数据源、视图等。设计任务栏里有一个倒退和前进的按钮,通过它,可让分别显示版式、控件、数据源、视图等的更全面信息。用得最多的是其中的“版式”和 “控件”。通过“版式”可用表格规划表单的外观,要用到的控件则全部在“控件”下选择。
  2.设置表格
  第1步:单击“版式”,在其下选择“自定义表格”。接着,选择表格的行和列的数目都为4,确定后表格即可插入。默认地,表格的边框线条为虚线。
  第2步:将鼠标移到表格的左上角,此时,表格左上角出现一个小小的方框控制标志,请右击之,选择“边框和底纹”,在弹出的设置对话框中同时选择“外边框”和“内部”,确定后退出,表格的线条就十分清晰了。
  第3步:单击“边框擦除器”工具,用它清除表格第1行的第3、4 两根列线条。完成后结果如图1所示。按一下键盘上的Esc键退出边框擦除状态。
  第4步:在表格中输入必要的文字。
  提示:在设计状态下,我们可插入表格、在表格中输入文字,在表格外的设计界面中输入文字。但处于填写状态时,这些文字是不能修改的,文本框是填写时用户输入文字的主要容器。下一步的主要任务就是插入文本框控件。
关键词: 技巧
责任编辑:韩博颖
All Rights Reserved, Copyright , .cn渝ICP证B2-号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i
京公网安备84号[SharePoint 2010 的那些事儿 – InfoPath]通过REST Web Service在表单中嵌入地图 - 致良知 - 博客园
2011了,作为小弟今年的第一篇博客,我将向大家介绍一个InfoPath 2010中相当劲爆的功能,就是如何在我们的表单中动态的嵌入Google 地图。好了,废话不多说,马上转入正题。
如果大家已经使用过InfoPath 2010的话,那么你应该会发现在InfoPath 2010中的数据连接类型中多了一个"来自REST Web服务",通过它我们就可以连接Google Map或Bing Map的REST Web Service,进而获得我们需要的地图信息。
在下面这个例子中我将利用InfoPath重新设计SharePoint 2010站点中的一个联系人列表的编辑画面,最终要实现的效果是在填写完联系人地址后要自动附上一张标记了该地址的地图图片。
在进行下面这个例子之前,我们还有两件事需要准备好:
在SharePoint站点中创建用于存储联系人信息的列表。
注册一个Google Maps API Key,注册地址为: l
首先进入我的SharePoint网站,打开联系人列表。这个列表是使用SharePoint自带的联系人列表模板创建的,还没有进行过任何定制。进入这个列表后在"列表"标签下找到"自定义表单"按钮。
点击该按钮打开InfoPath Designer 2010来设计该列表的编辑画面,如下图所示:
再开始连接Google Map之前先让我们来重新设计一下这张表单。在这里需要新建一个图片类型的字段,以保存根据联系人地址生成的地图图片。
下面创建一个连接到Google Maps REST Web Service的数据连接,该连接可以返回一个指定地址的GPS坐标。
该REST Web服务的地址如下,需要注意的是要将API_KEY换为你刚刚注册的KEY。
/maps/api/geocode/xml?address=Beijing&sensor=false &key=&API_KEY&
因为我们在录入了联系人地址后才需要获得该地址的GPS坐标,所以在这里要记得不要勾选"在打开表单时自动检索数据"。
由于Google Maps REST Web Service并不在我们的SharePoint服务器上,所以必须将这个数据连接转换为一个连接(.udcx)文件。点击"数据"标签下的"数据连接"按钮,选择刚刚建立的数据连接然后点击"转换为连接文件"按钮。需要注意的是数据连接文件必须要保存到SharePoint网站中的一个数据连接库中且将其批准。
下面要在表单中添加一些规则,用我们在联系人地址中输入的地址信息替代刚刚的REST Web Service Url地址参数的部分,然后Web Service将用这些参数进行查询,并返回需要的坐标信息。
点击"管理规则"按钮打开规则面板,并新建一个"操作"类型的规则。
在InfoPath 2010中不仅在数据连接的类型中新加入了REST Web服务,在规则中也加入了一个"更改REST Url"的操作,使用这个操作就可以根据地址字段的值获动态的获得该地址的坐标。
在弹出的"规则详细信息"窗口中点击"fx"按钮,打开"插入公式"窗口。
现在我们要用表单中的地址字段的值来合成该REST Web服务URL,
下面是这个例子中的公式:
concat("/maps/api/geocode/xml?address=",地址,",",省/市/自治区,",",国家/地区,"&sensor=false&key=ABQIAAAAz38Au3HCCLB9gNsZwYDjFxRO31y3ZySLHpOwqxBF2wOXorf5YRQaP3xNJ7mZnb-2bqHHp6akIpIeEg")
在添加了这个"更改REST Url"的操作后,还需添加一个"查询数据"操作,用于在更改了REST Web服务URL后根据该URL查询并返回坐标。
最后我们要做的就是根据这个查询获得坐标值生成表单中"地图"这个图片类型字段的图片地址。
继续在"地址"字段上添加规则,这次要添加一个"设置域值"的操作。
仍然使用concat函数将通过REST Web服务URL获得的经纬度坐标与Google Static Maps URL组合起来动态的获得联系人地址所在坐标的Google Map图片。
该公式为:
concat("/maps/api/staticmap?center=", lat, ",", lng, "&zoom=16&size=455x455&maptype=roadmap&markers=color:blue|label:S|", lat, ",", lng, "&sensor=false")
OK,到了这里这张表单就基本设计完了,下面来看看最终效果如何。
写了好几篇关于InfoPath 2010的文章了,越发感到InfoPath 2010的强大,相比于2007来说相信其会越来越多的被应用于各种项目中,各位看官觉得呢?Share your InfoPath Forms Anywhere - InfoJetSoft
&&& InfoJet Service
InfoJet Service 常见问题
为什么我遇到异常"[MC01]no xsn ..."?
InfoJet Service将注册的表单模板缓存到服务器内存中。
所以当AppDomain或IIS重启,已注册的表单模板将丢失,InfoJet Service在处理被丢失的表单模板时将抛出这个异常。
所以我们建议在调用下列方法前使用Publish Url检查表单模板是否存在于InfoJet Service中,如果不存在则重新注册它:
InfoJetService.BuildFormByTemplate(),
InfoJetService.BuildFormByXml(),
InfoJetService.ReloadForm() 和
InfoJetservice.UpdateForm(),
if( !InfoJetService.ContainsXSN( publishUrl ) )
&&&&//根据Publish Url重新加载表单模板内容。
&&&&//然后调用方法InfoJetService.Register()。
在xdoc.aspx.cs中,可以用下面的方法检查:
string publishUrl = this.Context.Request[ "xdoc_param_xsn_uri" ];
if( publishUrl != null && publishUrl.Length > 0 )
&&&&if( !InfoJetService.ContainsXSN( publishUrl ) )
&&&&&&&&//根据Publish Url重新加载表单模板内容。
&&&&&&&&//然后调用方法InfoJetService.Register()。
xdoc.aspx请求参数"xdoc_param_xsn_uri"的值是当前表单的Publish Url.
有很多原因可以导致AppDomain或IIS重新启动,请在全局Application_End()方法中使用System.Web.Hosting.HostingEnvironment.ShutdownReason属性来检查具体原因。
不合适的InfoJet Service配置也能导致AppDomain重新启动,请参考下列内容:
另外,InfoJet Service也把辅助数据源存储在会话状态中,当AppDomain或IIS重新启动,In-process会话状态将丢失,使用辅助数据源的表单可能将不能正常工作,所以我们建议使用Out-of-process或SQL Server会话状态。
Postback时如何禁用保存按钮?
InfoJet Service在Postback开始和结束时将自动调用下列方法,所以可以在它们中禁用/启用保存按钮:
&script language="javascript"&
function InfoJetCustom_OnPostbackStart(){
&&&&var saveButton = document.getElementById( "SaveButton" );
&&&&if( saveButton )
&&&&&&&&saveButton.disabled =
function InfoJetCustom_OnPostbackEnd(){
&&&&var saveButton = document.getElementById( "SaveButton" );
&&&&if( saveButton )
&&&&&&&&saveButton.disabled =
当Postback时,表单可能包含"脏"数据,所以我们建议禁用保存按钮来保持数据完整性。
Postback时服务端异常如何处理?
我们建议用如下方式在web.config中指定一个自定义错误页面:
&customErrors mode="On" defaultRedirect="~/ErrorPage.aspx"&
&/customErrors&
(1). 使用AJAX Postback模式时,请在自定义错误页面中加入下列PostbackError指令:
&!--InfoJetSoft.Service.PostbackError--&
&!--InfoJetSoft.Service.ErrorMessage(详细出错信息)--&
InfoJet Service将调用InfoJet_OnPostbackError()方法来停止Postback并撤消用户上次输入。ErrorMessage指令用于给用户显示一个详细的出错信息。
(2). 使用非AJAX(隐藏的IFrame)Postback模式时,请在自定义错误页面中添加下列脚本:
&script language="javascript"&
//自定义错误页面在iframe中显示。
if(self.location != top.location){
&&&&//父文档包含InfoJet Service Web表单。
&&&&if( parent != null && parent.document.getElementById( "xdoc" ) != null ){
&&&&&&&&Jet_OnPostbackError("The detailed message here");
自定义错误页面也能够捕获脚本超时异常。
我们建议使用AJAX Postback模式,因为AJAX模式提供了对网络传输的更多控制。例如,InfoJet Service可以在AJAX模式下探测到网络中端,并通过自动回滚用户输入来恢复失败的Postback,但是非AJAX模式则不支持这个功能。
实际上,在大多数情况下,服务器端异常对于InfoPath Web表单来说是不可恢复的,因为很困难判断一个Postback对于表单是否是不变、可重复的操作,因此我们建议将用户转向到一个恢复页面来重新打开表单,如果表单XML已经在上次成功的Postback中备份,类似下面:
&script language="javascript"&
function InfoJetCustom_OnPostbackError(detailedMessage) {
&&&&alert(detailedMessage);
&&&&var formId = document.getElementById("xdoc_param_form_id").
&&&&document.location.url = "RecoverPage.aspx?FormId=" + formId;
如果定义了InfoJetCustom_OnPostbackError(),它将被InfoJet_OnPostbackError()自动调用。
1. 如果使用表单验证保护xdoc.aspx,Postback将被转发到登录页面。
(1). 使用AJAX Postback模式时,请在登录页面中加入下列Relogin指令:
&!--InfoJetSoft.Service.Relogin--&
InfoJet Service发现Relogin指令时将自动调用InfoJetCustom_ReloginAfterAJAXPostback()方法,请在表单编辑页面中实现它来处理页面转发:
&script language="javascript"&
function InfoJetCustom_ReloginAfterAJAXPostback()
(2). 使用非AJAX(隐藏的IFrame)Postback模式时,请在登录页面中添加下列脚本:
&script language="javascript"&
//check to see if page is inside iframe
if( self.location != top.location )
2. 使用集成Windows验证或基于HTTP的验证保护xdoc.aspx时,或未保护xdoc.aspx时,请参考xdoc.aspx.cs中的下列代码:
string publishUrl = this.Context.Request[ "xdoc_param_xsn_uri" ];
if( publishUrl != null && publishUrl.Length > 0 )
&&&&&&&&if( InfoJetSoft.Service.Util.ConfigUtil.UseAJAX() )
&&&&&&&&&&&&output.Write("");
&&&&&&&&else
&&&&&&&&&&&&output.Write("&script language='javascript'&");
&&&&&&&&&&&&output.Write("");
&&&&&&&&&&&&output.Write("&/script&");
&&&&&&&&output.Close();
当服务端异常或会话超时时如何恢复XML表单?
我们建议在xdoc.aspx里成功处理一个Postback之后备份表单XML,当服务端异常或会话超时时重新打开备份表单,参数“xdoc_param_form_id”可用作备份表单的标识。
&script language="javascript"&
var formId = document.getElementById("xdoc_param_form_id").
document.location.url = "RecoverPage.aspx?FormId=" + formId;
如何通过邮件提交表单?
要启用邮件提交,配置键InfoJetSoft.Service.SmtpServer和InfoJetSoft.Service.MailFrom必须被设置。
InfoJet Service将使用SmtpServer上的MailFrom帐号发送邮件。
如果SMTP服务器需要认证,键InfoJetSoft.Service.MailUserName和InfoJetSoft.Service.MailPassword也必须被设置。
也需要InfoJetSoft.Service.TempFolder键,InfoJet Service将把邮件附件(XML文档)缓存在其中。
并请将TempFolder目录的"完全控制"权限赋予给运行InfoJet Service的帐户。
如果impersonation被启用,最好将"完全控制"权限赋予给everyone。
如何打印从InfoPath Web表单导出的MHT文件?
可以使用下列按钮代码打印导出的MHT文件:
function CTRL23_5::OnClick(eventObj)
&& XDocument.View.Export( "test.mht", "MHT" );
&& if( JetService )
Application.RunClientCode( "var mhtWindow = window.open( window.location.protocol + '//' + window.location.host + '" + XDocument.View.ExportPath + "');" );
Application.RunClientCode( "mhtWindow.print();" );
Application.RunClientCodeOnly();
在导出的MHT文件中,按钮控件被隐藏,下拉框、单选、复选按钮将被转换为文本。
这个功能需要配置键"InfoJetSoft.Service.InlineFilePath",MHT文件将被导出到InlineFilePath。
另外,可以使用如下的位于InfoPath Web表单外部的HTML按钮来在新浏览器窗口中打开由当前表单视图导出的MHT文件(需要配置键"InfoJetSoft.Service.InlineFilePath"):
&input type="button" onclick="InfoJet_OpenPrintableVersion(this);" value="可打印版本"&
如何清空InfoJet Service缓存在HTTP会话中的表单数据?
InfoJet Service缓存的表单数据的Session键值存储在InfoPath Web表单(InfoJetForm.Xhtml)的HTML隐藏字段"xdoc_param_form_id"中。
所以,当你想清空当前表单使用的会话数据时,需要提交这个Session键值。
一般来说,有两种情况:
1. 用户提交表单保存,之后被重定向到其它页面。
&&&&Session键的值已经包含在表单中,所以你可以直接使用下面的代码:
&&&&InfoJetForm savedForm = InfoJetService.ReloadForm(Context);
&&&&InfoJetService.ClearFormCache(Context);
&&&&//重定向到其它页面。
2. 用户点击了一个"关闭"按钮直接关闭浏览器.
&&&&这种情况下,不需要提交整个表单,但是需要使用JavaScript提交"xdoc_param_form_id"到服务端。
&&&&var formId = document.getElementById("xdoc_param_form_id");
&&&&if( formId != null ){
&&&&&&document.location="ClearSession.aspx?xdoc_param_form_id="+formId.
&&&&在ClearSession.aspx中:
&&&&&html&
&&&&&% InfoJetService.ClearFormCache(Context) %&
&&&&&script language=javascript&window.opener= window.close();&/script&
&&&&&/html&
CleaFormCache()方法也会同时清除表单使用的临时文件。
当用户退出登录时,请调用下面的方法清空当前用户使用的HTTP会话数据和临时文件:
InfoJetService.ClearUserCache(Context);
InfoJet Service演示程序中包含了相关代码,请参考。
如何使用自定义图片链接函数?
您需要重写infojet.js中的InfoJetCustom_OnLinkedPictureClick(event, linkedPicture)函数。
当用户点击链接图片时InfoJet Service会自动调用这个函数。
你需要在这个函数中设置linkedPicture的src属性,然后调用InfoJet_UpdateField(linkedPicture)。
如何连接到Oracle?
要连接到Oracle,请先基于SQL Server数据库设计表单模板,然后在Oracle中创建同样结构的表。
再在web.config中添加下列配置键:
&add key="InfoJetSoft.Service.GlobalConnectionString"
value="Provider=Data Source=XE;User Id=Password="/&
(目前,只支持OLEDB驱动。)
键将替换表单模板中的所有数据库连接串。
Copyright (C) 2005 - 2012 InfoJetSoft all rights reserved

我要回帖

更多关于 infopath表单制作 的文章

 

随机推荐