Architecture - DevSource
DevSource: Microsoft Developer Resource DevSource Home Sponsored by Microsoft Home Add Ons Architecture Languages Techniques Using VS Forums
Home arrow Architecture arrow Designing Forms for Microsoft Office InfoPath and Forms Services 2007 (Part 3)
Designing Forms for Microsoft Office InfoPath and Forms Services 2007 (Part 3)
By DevSource

Rate This Article: Add This Article To:

This is the third in a series of excerpts from the book, Designing Forms for Microsoft Office InfoPath and Forms Services 2007. In this excerpt, the authors show you how to build reusable components.

Updating Template Parts

Let's say that your IT department has finally completed the AddressBlock template part and distributed it to the entire company. It has been six months, and now hundreds of form templates use this address block. Form template designers love this component because it saves them a lot of time and energy. Instead of having to add the address block to their form templates manually, they can now just insert the AddressBlock template part and their work is done.

However, users have been complaining that it's cumbersome to have to type the city and state every time they use a form that collects address information. They would like to choose this data from a list of cities and states. The designers in the IT department have graciously decided to make that change to improve the usability of forms throughout the company. They have updated the AddressBlock template part to replace the two Text Box controls for city and state with two cascading Combo Box controls--one that contains the state and another that shows the cities in the chosen state. (Also, the list of states will depend on which country is chosen from the country Combo Box. See Chapter 7 if you need a refresher about how to implement cascading List Box controls in a form template.) Figure 10.12 shows the new version of the AddressBlock template part after making these changes.

The other piece of feedback the IT department has received, this time from the form template designers, is that the AddressBlock component uses the default icon for all template parts. This makes it difficult to quickly differentiate between multiple template parts in the Controls task pane. So, the designers in the IT department decide to change the icon as well. Let's walk through how to do this.

ADVERTISEMENT

To change the icon, first open the Template Part Properties dialog for the template part (Figure 10.13). You can open this dialog by clicking on the Properties menu item on the File menu while designing the template part. From this dialog, you can change the name of the template part, the ID, and the icon associated with the template part. The name and ID are generated automatically the first time you save your template part. (We'll change these later in this chapter.) The icon is set to a default icon for all template parts. The dialog in Figure 10.13 shows the Template Parts Properties dialog after changing the icon.

Updating a Form Template That Contains the AddressBlock Template Part

Once the designers in the IT department have completed all the necessary changes to the AddressBlock template part, they tell all the form template designers in the company that a new version of the AddressBlock is available. As a form template designer, you want to take advantage of these changes. You also want an easy way to update the form templates that use existing AddressBlock template parts. It could be quite tiring to open each form template and search for all the template parts in every view before you can update them. Fortunately, there is an easier way to do this. You do have to open each of the form templates, but, once you do, you can update all instances of the AddressBlock throughout the form template (even across multiple views).

The first thing you must do is install the new AddressBlock. You install the new template part the same way you did the first time you installed the component. (If you have previously set up a repository of template parts using the registry key we talked about earlier, this step isn't necessary. In that case, InfoPath will load the new template part automatically.) Once you install the new version of the AddressBlock template part, all the existing AddressBlock components in the form template will now have a warning design-time visual, as shown in Figure 10.14. This visual simply alerts you to the fact that there is a new version of this component. When you see this design-time visual, if you then right-click on the tab at the bottom of the Section for the template part, you can choose Update from the context menu. This will update all the template parts of that type throughout your form template, even in different views. This is quite useful if you have a form template that uses many instances of the same template part.

In addition to the Update context menu item, you will see a More Details menu item on the context menu. Clicking on this item opens the dialog shown in Figure 10.15, which will give you more information about why there is a warning design-time visual on this Section control. You can then choose to update all AddressBlock template parts in the form template by clicking the Update button.

As we mentioned earlier, when you insert a template part into a form template, it's no longer an atomic component. The controls contained in the template part become part of the current form template. You are free to move the controls around or delete them entirely. However, when you update a template part, the component will be reinserted. That means that view changes are lost. For example, let's say that you deleted the city Combo Box from the template part. When you update the template part, the city Combo Box will be reinserted. (If you have previously moved pieces of the template part around in the view, those items will remain in the view.)

Also, when you update template parts, any view changes will be incorporated into the current form template, as will any calculated default values, rules, data validation, or data connections associated with the template part. When you update a template part that contains these features, as is the case when inserting a template part into an existing form template, any existing values, rules, data validation, or data connections will be replaced, as we talked about earlier, and not simply appended to the form template. In addition, in the case of updating an existing template part, if the component has any conditional formatting associated with it, those conditions and actions will also be replaced. Of course, when you update your template part, you will be warned that you may lose this data, but that won't help you if you've spent hours making those changes to your form templates in the first place. So, as we mentioned earlier, it's always a good idea to back up your form template before you update a template part.

Locating All Template Parts That Need to Be Updated

As you can tell, updating all template parts is relatively easy. However, what if you want to identify all the template parts that need to be updated not only in the current view but also in every view of your form template? You may, for example, want to inspect all instances of a template part before you choose to update them all so that you can determine whether there are any customizations (e.g., conditional formatting, rules, and so on) that you want to save. Locating all template parts that need to be updated is relatively easy as well.

First, go to the Design Tasks pane by clicking on the menu item of the same name on the View menu. Then, click on the Design Checker link in the task pane. This opens the Design Checker task pane (Figure 10.16). The Design Checker task pane provides you with a way to check your form template for various types of issues. This includes updates needed for template parts as well as many other items (which we'll talk about in more detail in Chapter 14).

Notice that a warning appears in the Design Checker task pane shown in Figure 10.16. (There will be one warning for each template part in the form template.) This warning tells you that there is an AddressBlock template part in the form template that needs to be updated. If you click on the warning text in the task pane, the template part that needs to be updated will be located. If the component is in the current view, it will simply be selected. If the component is outside of the viewable area of the current view, the view will be scrolled to show it. If the template part is in another view, the view will be switched to that view and the template part will be selected. Once you've located all the instances of the template part that need to be updated, and you've determined that it's okay to update them, you can then right-click on one of the components and update the current template part and any other template parts of this type by clicking the Update menu item as you normally would.

Customizing Existing Template Parts

Now that you know how to use template parts in your form templates, the next thing you'll probably want to do is go out to the Web and find some interesting template parts that you can reuse. There is no doubt that, when you do, you'll want to modify an existing template part in some way. For example, you may want to add your company logo, change or add some data validation, change the name of the template part, or simply change the icon.

Customizing an existing template part is very easy. When you find the template part you want to change, the first thing you'll probably want to do is download it to your computer (and pay for it if it isn't free). Then, you just open it in design mode in InfoPath as you would for any other template part. Once you make the changes you want, the next thing you'll obviously want to do is save. However, when you save, at this point you haven't created a new template part. All you've done is update an existing one. That means that if you then distribute this component to your users who happen to be using the original one, when they install your component and open a form template that uses the original one, they will be warned by InfoPath that an update is needed.

Maybe this is what you want. It is more than likely, though, that this isn't what you intended. Instead, you probably wanted to create a completely new template part based on an existing one. The one thing to remember is that a template part has an ID that uniquely identifies the component. (Refer back to Figure 10.13.) When you create a new template part, this ID is generated automatically for you. When you customize an existing part and save it, the ID does not change. Therefore, in order to create a new template part, you must change the ID. (It's also a good idea to change the name as well. In fact, when you change the name of the template part the ID is automatically changed. This is one easy way to create a new template part based on an existing one.) Figure 10.17 shows the Template Parts Properties dialog again, but this time after we changed the name and ID of the template part.

The name is simply a string and can be any name you choose. The ID is a Uniform Resource Name (URN) that uniquely identifies the template part. As you can see from Figure 10.17, the URN contains the name of the template part, the date, and the time, which helps to uniquely identify the template part.

If you want to create a new template part, you must change this URN. For example, you could change the name part of the URN and the date and time by hand. (You'll notice that when you change the name of the template part, the ID changes as well, but not vice versa.) If you decide that you want to regenerate the template part ID based on the new name you entered, just click the Reset button. Once you change the URN and save, you have a completely new template part. (Of course, since it's possible to manually edit the template part ID in the Template Part Properties dialog, it is also possible to enter the ID of an existing template part. This is only useful if you want to overwrite an existing part and not create a new one.)

What's Next?

In this chapter, you learned how to create your own components. Now you can not only design professional form templates but also create components that can be reused in other form templates. Template parts make designing form templates much easier and also give you a way to ensure consistency across the form templates in your organization.

In the next chapter, we'll talk about two of the final steps involved in designing a form template--security and deployment. We'll discuss how you can add digital signatures to your form templates in design mode and how you can sign the forms you fill out.




Discuss Designing Forms for Microsoft Office InfoPath and Forms Services 2007 (Part 3)
 
>>> Be the FIRST to comment on this article!
 

 
 
>>> More Architecture Articles          >>> More By DevSource
 



Microsoft's Future: A Chat With Their CTO, Barry Briggs

Play Video >

All Videos >

Julia explores the Robotics Studio!

Read now >

Messages to Bill Gates!

Read now >

View Now
DevSource RSS FEEDS
XML Want an easy way to keep up with breaking tech news? And the Get DevSource headlines delivered to your desktop with RSS.