Showing posts with label InfoPath 2003. Show all posts
Showing posts with label InfoPath 2003. Show all posts

Tuesday, July 29, 2008

Debugging an VSTO and InfoPath 2003 Solution from .Net 1.1

To get the InfoPath to default back to .NET 1.1, you need to update or create a file named INFOPATH.EXE.CONFIG, add it to the same directory as your infopath.exe and add the following:

<?xml version ="1.0" >

<configuration>

<startup>

<requiredRuntime version="v1.1.4322"/>

</startup>

</configuration>

Apparently this goes for any old .NET applications.

Please copy the created file “infopath.exe.config” to your Office11 Folder

(eg: C:\Program Files\Microsoft Office\OFFICE11)

This will force InfoPath.exe to be run in the context of .Net 1.1 and not .Net 2.0

Saturday, May 05, 2007

Quick overview of InfoPath Object Model

InfoPath 2003 Object Model

thisXDocument.DOM

IXMLDOMNode

Read field1.text

Set field1.text

InfoPath 2007 Object Model

this.MainDataSource

XPathNavigator

Read field1.Value

Set using field1.SetValue()

Thursday, August 17, 2006

Microsoft Office 2003: Microsoft InfoPath 2003 Performance tuning

Overview of the solution:

The Solution here highlights how a Microsoft technology is used in critical business problems using solutions built with the Microsoft Office System. Microsoft InfoPath 2003 is one of the new office tools available with Microsoft Office 2003. Microsoft InfoPath 2003 gather information flexibly and efficiently in rich, dynamic forms and more effectively share, reuse, and repurpose information throughout your team or organization. InfoPath 2003 helps improve collaboration and decision-making to positively impact your business. While developing solutions using InfoPath 2003 most of the developers will face this performance issues and struggle to overcome from it, here in this article I provide some of the valuable tips and tricks that will definitely increase your InfoPath 2003 solution’s performance.

InfoPath 2003 Performance tuning tips and tricks:

If the view contains many controls, and especially if they are repeating controls such as repeating tables and repeating sections, you should separate the view into multiple views to reduce the amount of HTML rendering that InfoPath is required to do.

Always try to Use Expression Box to display calculated value, if you don't need to storethat value. If you have business logic to trigger all the calculation, pleaseonly trigger necessary calculation. Triggering large amount of calculationsis costly process.

Rules: About the form XSL, and XSF, anything in the XSF is extremely slow,anything in the XSL is acceptable, or fast, so when we develop a form, we have toreview these files frequently, for example, the conditional formatting goesto the XSL, it is ok, the speed is acceptable. But rules are going to the XSF, then we try to find a way to convert them to C# code, some of the things we do can become C# some not, once it is C# (with the custom event handlers), the speed increases dramatically.

Views: About the multiple views in a form, we found that if the form have one or10 views, does not matter, unless that increases the size of the XSF, then thespeed goes down.

NOTE: Not all the things in the XSF are slow; some of the items are fast

xml DOM: Be cautious while using replace node function on the xml DOM in the C#code, replacing large amount of nodes is very slow, it seams a DOM problem,talking about a 1MB of xml, ironically, loading 10MB of xml in the DOMusing the DOM function is extremely fast, so the speed is different perfunction.

Avoid using more number of tables (data or layout) in any single view. Avoid large repeating data structures that can grow too many pages. Avoid complex nesting of optional and repeatable sections. These are quite complicated to layout and also can quickly cause a single view to become very large.

Be aware of exactly what your business logic does. For example, onAfterChange can fire multiple times for a single edit.

Try to avoid querying data at the form load event. Rather than querying for all the data then having InfoPath just show a small amount, refine your query and only bring the data you plan on displaying into InfoPath. Don’t pre-populate data sources that aren't necessary on load. Don't set up un-used data source. Merge static xml data sources into one if you have multiple xml data connections.

Limit the number of drop-down list boxes that contain many items, especially within repeating controls. Internet Explorer renders each drop-down list box with its own window handle (HWND), and the HTML representation of a drop-down list box with many items is significant.

Friday, August 04, 2006

Adding Custom ToolBar Button in your InfoPath 2003 Form

Adding Custom ToolBar Button in your InfoPath 2003 Form. Open the Manifest.xsf file.
Find the xsf:mainpane tag in the manifest file and then Insert the following code after the xsf:mainpane tag in the manifest

<xsf:toolbar caption="myToolbar" name="myToolbar">

<xsf:button name="tlbSave" caption="Save Data"> </xsf:button>

</xsf:toolbar>


Finally You must create an event handler for the OnClick event associated with each of these buttons for them to be functional. This will show you button with "Save" Text return on it.

Displaying HTML content in any of the InfoPath 2003 form’s control

Displaying HTML content in any of the InfoPath 2003 form’s control – the Rich Text Box control can be used to copy and paste any content except the HTML content.

Open corresponding XSL file of your InfoPath Template and select the field in which your going to use the HTML as input. Your control element will be like this

<xsl:value-of select="my:field1" >

What you have to so is just add one attribute called “disable-output-escaping”. And set that attribute to yes.

<xsl:value-of select="my:field1" disable-output-escaping="yes">

Hiding a control through code - InfoPath 2003

Hiding a control through code in infopath

public bool ControlProperty()
{
return true;
}


In the property window of your InfoPath control, select Display tab, Click on conditional formatting button, then click add button, select Expression box in the 1st drop down box, and add the code xdExtension:ControlProperty() in the text box and select the property you want to set for that control and click ok.

Setting Focus on Controls - InfoPath 2003

Setting Focus on Controls in your infopath forms.

// Code For Setfocus
IXMLDOMNode nodeSelText = thisXDocument.DOM.selectSingleNode("/my:myFields/my:field1");
thisXDocument.View.SelectText(nodeSelText,Type.Missing);

Custom save Code in InfoPath 2003

To enable or disable save functionality

In the design mode of InfoPath, on the Tools menu, click Form Options. Click Open and Save. Click Open and Save. In the Enable Features section, select the options appropriate for your form. In the Save behavior section, you have a check box option called Save using custom code. If you select this option and click Edit, you create the OnSaveRequest callback function in your form code.

public void OnSaveRequest(SaveEvent e)
{
if (thisXDocument.IsNew == true e.IsSaveAs == false)
{
e.IsCancelled = e.PerformSaveOperation();
e.ReturnStatus = true;
}
else
{
thisXDocument.UI.Alert("The 'Save As' functionality is disabled for forms that are not new.");
}
}
  • ReturnStatus = true, IsCancelled = true The form is not saved, but the OnSaveRequest function is successful.
  • ReturnStatus = true, IsCancelled = false The form is saved, and the OnSaveRequest function is successful.
  • ReturnStatus = false, IsCancelled = true The form is not saved, an error is thrown, and an error message appears to the user.
  • ReturnStatus = false, IsCancelled = false The form is not saved, an error is thrown, and an error message appears to the user.

ASP.NET MVC - Sport Facility Booking system

  The project relies on some external service providers. Thus accessing them via their API requires authentication. An API Key need to be su...