Configurator Designer and combo column widths

Good Morning,

I am going in circles on this. I have a combo in a configurator populated via BAQ/dynamic list. It provides a list of allowable parts to choose from along with their part desc. The Desc is getting cut off in the 2nd column of the dropdown even when there is plenty of space. The cut off is not based on a constant number of characters either… IDK how it decides where it’ll end on each combo. I tried all of the available std settings for the combos, eg format, list width, auto size, etc. per below and nothing gives. Looking further into it, I noticed that combos in customizations allow manual setting of widths of each column in the combo, but config designer doesn’t provide access to those.

I was reviewing the JGomez video (in this post, thanks Jose/folks! Configurator Designer Text Box - How to wrap text and top left justify?) on using net reflector to see what the control is in infragistics and how to access those variables, but I don’t have net reflector nor experience with using it to try and figure out how to access the correct/named column width variables. Has anyone dealt with this in their configurator?

Thank for any suggestions!
Nancy

This sounds very familiar. @Nancy_Hoyt , are you still on v10.1.600, as per your profile?

Wondering if this is a bug with the auto-size setting, which may be resolved in later versions (if I’m remembering this correctly). I’d run it by Support if you haven’t already.

Even if it is a confirmed bug in that version, you may still be able to set the dropdown width “manually”, going down a similar path that Jose did in the video you linked to (you don’t necessarily need .Net reflector, etc.).

The basic idea is to dive a level below Configurator and “hijack” some of the UI control properties, which you’d need to do from an area of configurator that executes client-side code (On Loaded not On Load, etc.). You’d do something like this:

Inputs.yourInputName.Control.propertyName = xyz;

This can be very finicky as it’s tough to figure out exactly which property you need in many cases, and it’s not always straightforward what “format” your property value needs to be in (the “xyz” above). I typically reference sites like this: ComboBox Class (System.Windows.Forms) | Microsoft Docs
and go through a lot of trial and error to hone in on what needs to be done. Another hang-up can be figuring out which usings / references you need to add in the code. Although, I know @timshuwy has done a bunch of stuff like this, so let’s try tagging him in case he’s dealt with this specific issue before.

All that said, I’d caution against manipulating the Control properties if you can avoid it. It can be messy and cause upgrade problems.

Thanks very much for your reply and suggestions and link Tom. I will look further at it. I agree, I really would prefer to not have to manipulate the control but I may have to if it’ll fix it. All of our part descriptions start with the generic and then end with the details. Kinda nice for reporting but not nice when the right side gets chopped off!

It feels like a bug to me. I’m doubtful support will do much for us on it, we are not upgrading for at least a year…I guess they could tell me yep it’s a bug that’s fixed.

If Tim S has any added suggestion as well, I would be greatly appreciative.

Have a nice weekend!
Nancy

1 Like

Based on the label text being “Select Bearing Housing”, I’m guessing that the control is one of these two:

Are those highlighted columns (Format, ListWidth, …P Width) editable?

Hi Calvin,

Yes they are. I have edited them every way imaginable to no avail. I placed one down “freshly” to see if it would jog anything, but no.

Nancy

Does that combo show two fields from the BAQ? It looks like the PartNum and Description are separate columns.

What happens if the Combo only shows the Description? Does it still show as a column that is narrower than the control width? If it takes up the whole control width, you could make a calculated field in the BAQ to have PartNum and Descrition in a single column. Pad out the partnum with trailing spaces to make it kind of look like two columns. I say “kind of” because the font isn’t monospaced.

edit

something like:

CONCAT(Part.PartNum,REPLICATE(' ',10-LEN(Part.PartNum)),Part.Description)
1 Like

@Nancy … I personally have chosen to write my own C# Linq queries and build up a string instead of using the BAQ Tool for Combo boxes. It gives more control about the formatting and execution of the query. You can do all this inside a C# Code block.
Here is a sample that queries Part master which finds all parts in a specific product group plus a few other filters on the Part# and Description:

//Returns a list of tilde delimited Part Numbers and Part Descriptions from the part master.
if (Inputs.ProductGroup_Cmb.Value == "") {
    //this prohibits the combo box from getting populated too early
    return "";
} else {
    return string.Join("~", Db.Part.Where(p =>
            p.Company == Context.CompanyID &&
            p.ProdCode == Inputs.ProductGroup_Cmb.Value &&
            p.PartNum.Contains(Inputs.StdPartNumberContains_Chr.Value) &&
            p.PartDescription.Contains(Inputs.StdPartDescContains_Chr.Value))
        .Select(x => new { x.PartNum, x.PartDescription }).ToList().Select(r => string.Join("`", r.PartNum, r.PartNum + ": " + r.PartDescription))) ?? "";
}
4 Likes

Thanks so much Tim for your instructions. Between your and Calvin’s ideas I hope to get something working tomorrow. I’ll post how it goes.

Nancy

This is a good idea and a tempting way to fix without too much redesign… if it works. Between this fix Calvin and Tim’s details, I hope to get it working tomorrow and post back what I did.

Thank you!
Nancy

What would the returned string look like? I get that it is a tilde separated list, but isn’t that typically for one-dimensional arrays?

This returns pairs of Partnums and Descriptions. What separates the Partnum from the description? Is it the grave symbol in that last Join. ? Would a sample output look like:

ABC-123`Part ABC~XYZ-999`Left-handed Widget polish~PDQ-456`Bag of Steam

for

PartNum   Description
ABC-123   Part ABC
XYZ-999   Left-handed Widget polish
PDQ-456   Bag of Steam

And what property of the Combo would you set to that string? Does it automatically take the first “column” as the value, and the second for the displayed text?

1 Like

@ckrusen Yes, this returns the Part Number then a back tick then the description, then a tilda… the back tick is what keeps the VALUE separated from the displayed version. If you want the part number to show as well, then you would need to have the part number also in the right side of the back tick. like this:

//ABC-123`ABC-123 Part ABC~XYZ-999`XYZ-999 Left-handed Widget polish~PDQ-456`PDQ-456 Bag of Steam

would return:

PartNum   Description
ABC-123   ABC-123 Part ABC
XYZ-999   XYZ-999 Left-handed Widget polish
PDQ-456   PDQ-456 Bag of Steam
1 Like

Actually, I just looked back on my code I submitted earlier, and it already combines the part number into the description with the JOIN command.

string.Join("`", r.PartNum, r.PartNum + ": " + r.PartDescription)

Note how the r.PartNum is listed twice… the first PartNum is the “value” and the second is the building of the description with a colon. So this will return the following “look” into the combo box:

ABC-123: Part ABC
XYZ-999: Left-handed Widget polish
PDQ-456: Bag of Steam
1 Like

Good Morning,

Calvin, I tested with your suggestion of making a calculated field in the query that I have in place for dynamic list to show the calc’d part and desc field together and the interface is not as buggy. Still a little buggy per below, but usable since when selected, entire part desc can now be seen.
Since this fix works ok, I’m going to run with it. It is tempting to go the route of Tim’s to gain more control over it, but then I have a few configurators each with different fields and workings that would need to be changed for new methodology. If I were starting off, I would use Tim’s method for sure.\

Thanks folks ~ Love this group! :heart_eyes:
Nancy

2 Likes

Awesome! I am curious if you would have still run into the truncation issue with Tim’s method or not. I will say though, Tim’s method for populating drop-downs tends to be much more performant than using BAQs (even when the LINQ code is essentially the same query as the BAQ). At least, that has been my experience. I assume it has to do with the overhead involved when configurator needs to execute a BAQ.

2 Likes

Hi Tom,

Me too … I am curious if it’d work better with the formatting. No time right now to deal with it… machinery orders are indeed up here in PA - Plenty busy with projects. Now lets get the raw materials timely!

Nancy

One interesting option with “my method” is that you can have a condition (as my example shows) that checks to make sure that all the required values are populated BEFORE running the query. This will SPEED UP the configurator. using a BAQ, it will always run, even if all the filters are not defined yet, possibly returning too much data. In my example, i simply returned a blank value, but I have also used this to populate it with something like “Not Applicable” or “Please choose product group first”…
Also, my technique, I typically create a UDMethod for each combo box… “CBP_PartNum” would be the name for Combo Box Populate of Part Number… then in your dynamic comb box, you simply need to run the UDMethod. It is actually much quicker to create new combo boxes this way.

2 Likes

FWIW - Whenever adding a Description field in a calculation I’ll often truncate it to some max length that I’ll know I want, with something like LEFT(Part.Description,100)

More often than not, the description is just used as a hint to what the P/N is referring to. Some of our part description are really long as it was copied right from a manufactures website, or includes notes (that shouldn’t be in the description but are). And I don’t need an inventory report to have a third of a page taken up by one item because the description was so long.

Probably wouldn’t hurt to strip out non-text characters (TAB. CR, LF, etc…) and non-ASCII text (fancy quotes, special symbols like ™, etc…) too. Copying from a website (or even your own internal Word Doc can introduce all sorts of weird characters).