Anyone who has worked with SalesLogix knows about managing picklists in the LAN client and how you can manage what items are available in a list and what attributes the list has. The SalesLogix 7.5 web introduces a new paradigm for managing picklists – kind of.
In the SalesLogix LAN, picklist attributes (Required, Allow multiple selections, Allow users to edit, etc.) are defined per picklist. Any screen that uses that picklist on a picklist control inherits the attributes defined at the picklist level.
In SalesLogix web client, picklist attributes are not defined globally at the picklist level, instead the picklist attributes are defined at the picklist control level. This means in the SalesLogix web client that you could have two screens, both using the same picklist, yet with different picklist behavior. One screen might have the picklist allowing multiple selection, another screen allowing only a single selection.
While it could be argued that this design allows developers greater flexibility in how picklist controls work for end users, I think managing the attributes at the Picklist level is a far better approach. For instance, in the scenario I just mentioned about one screen allowing a picklist to have multi-select values and another screen allowing only single values, that just offers up way too many issues with data consistency problems.
Enough about my opinions on the picklist controls in the web, lets talk about how you go about managing these attributes.
In the LAN
Ok, this is pretty straight forward:
- Go to manage picklists in the client.
- Select the picklist you want to set attributes up on
- Select the options that you desire
- Close the manage picklists
There you have it, the attributes are defined. Now any where this picklist is used on any screen in the LAN it will use the defined attributes.
In the Web
Ok so in the web we have two considerations. Since web forms can either be quick forms or custom smart parts, there are actually two separate processes that will need to be used based on where the particular picklist control resides.
Setting the picklist attributes is rather easily on quick forms.
- Open the screen with the picklist
- Click on the picklist control you wish to edit the properties for
- In the properties window (if this is not showing, click the property icon on the toolbar which looks like: )
- In the properties of the picklist control, you should see a section called “Behavior”
- Set the attributes as you desire for this one control.
Remember setting these properties is just for this one picklist control. If the same picklist is used in other screens on the web you should also set those attributes to match.
For your reference here are the equivalent properties
|WEB TERM||LAN TERM|
|Allow Multiple Selections||Allow Multiple Selections|
|Item Must Exist||Text must match a list item|
|NOT AVAILABLE||Users can not edit items|
For custom smart parts in the SalesLogix Application Architect, there is no quick form interface. For these custom smart parts screen you must modify the ascx page directly in code. To do this:
- Open the custom page you want to modify under the portal.
- Find the control in the code. All of the picklist controls start with the following tag: <SalesLogix:PickListControl…
- Ensure the required attributes are specified in the picklist tag. For instance, lets take a look at one example where we have a picklist control that is not sorted alphabetically:
<SalesLogix:PickListControl runat=”server” ID=”Description” PickListId=”kSYST0000027″ PickListName=”Note Regarding” MustExistInList=”false” MaxLength=”64″ />
To add the sort we just add the following
<SalesLogix:PickListControl runat=”server” ID=”Description” PickListId=”kSYST0000027″ PickListName=”Note Regarding” MustExistInList=”false” AlphaSort=”true” MaxLength=”64″ />
The following are the properties that can be added (note they are case sensitive):
- All values should be set to “true” or “false”
MustExistInList=”false” Note that this defaults to true even if it is not specified, unless explicitly set to false.
AlphaSort=”true” Note that this defaults to true even if it is not specified, unless explicitly set to false.
AllowMultiples=”true” Note that this defaults to false even if it is not specified, unless explicitly set to true.
Required=”true” Note that this defaults to false even if it is not specified, unless explicitly set to true.