Developing for Dynamics GP

by Microsoft Dynamics GP Developer Support Team (Fargo, ND, USA)

Smartlist: Only the data area should grow

Smartlist: Only the data area should grow

  • Comments 14

Patrick Roth - Click for blog homepageI've seen several questions over the years on Smartlist of the "Why doesn't it?" variety such as:

Why does Smartlist export to Excel so slowly?

Because Smartlist exports row by row and sets each cell individually.

Why does Smartlist automatically try to display the default Smartlist when the node is selected (such as Customers)?

It was designed that way because a GP Smartlist is easy to stop.  Smartlist Builder created Smartlists aren't easy to stop because they are running a big SQL query before they can start to fill.  A Dexterity based Smartlist doesn't work that way.

Why doesn't the splitter control between the Smartlist object & favorites panel and the data panel work?

Because there isn't one.  The black line you see is merely the treeview control (the left control) and the listview control (the control on the right where data shows) touching each other.

When I expand my Smartlist window to see more information, the Smartlist object field also grows taking up too much room.

Yes it does, doesn't it?  But that is why you have a nice big 24" monitor for.  Don't you?  Don't look at me, I passed on a 24" monitor and kept my old 19" widescreen that looks nice and that I like a lot.

But this is one area where we can do something about how our Smartlist window displays.

The first thing we should look at is why controls on a window behave as they do.

This is a fairly broad question and it depends on the types of fields on the window.  However for our purposes of this window, there is a property on the window called Resizeable.  This can be set to:

  • False: No fields change size
  • True - Automatic: Dexterity determines how the fields resize
  • True - Per Field: Each field has settings to determine how it should resize

In this window, the setting is "True - Per Field" which means it is already set as we need it.  We just need to change the behavior of a few fields and how they resize themselves as the window is resized.

If Modifier, each field has a Resize-Horizontal and Resize-Vertical property that defines how the field will resize if the window is resized both horizontally and vertically. 

If a field is set to one of the different "Grow" settings, then the field will grow proportionately to how much the window grows in that direction.

In the ASI_Explorer window in Modifier, the field ASI_ExplorerTreeView (the tree that holds the Smartlists and Favorites) has the setting for Resize-Horizontal set to "Stay Left-Grow".  Meaning "Stay anchored to the left side but grow as the window grows".  We don't want that, we want it to stay there and stay the same size.  So by using Modifier to change the property to "Stay Left", the field will no longer grow.

For the ASI_ExplorerListView (and '(L) ObjectString' above it), these are set to "Stay Right-Grow" because they should resize.  They are set to "Stay Right" because it is expected that the ASI_ExplorerTreeView field will also grow.  Since the ASI_ExplorerTreeView field will no longer will grow, we need to change the property to just "Grow" otherwise we'll end up with a big gap between the fields as the ASI_ExplorerListView field moves to the right.

That really is it, just changing this property on 3 fields solves the issue.

After granting myself security to the modified form in the Modified/Alternate Forms and Reports window and displaying the Inventory Purchase Receipts Smartlist, I can easily see every column in the out-of-the-box Smartlist.

Modified Smartlist Window

You can very clearly see above that the Smartlist Objects & Favorite control on the left is a fixed size allowing the maximum amount of area for the important Smartlist data to show.

I've attached a package file of this modification to this post.  It was created in 10.0 but I would guess it'll work fine in 9.0 and likely GP 2010 when it releases.

Regards,

Patrick
Developer Support

// Copyright © Microsoft Corporation.  All Rights Reserved.
// This code and any code in attachments to this blog
// post is
released under the terms of the
// Microsoft Public License (MS-PL, http://opensource.org/licenses/ms-pl.html.)

Attachment: SmartList.package
  • Fantastic tip! Thanks for the package file too. We missed you at Convergence.

    MG.-

  • So why doesn't MBS actually fix all of the above listed limitations?  Put a splitter control in smartlist.  Fix the way it exports rows on a row by row basis (You know when I can take 20,000 rows and output them in under 10 seconds to excel you should be able to as well, it's really not that hard.)

  • Because there isn't currently a splitter control.  You'd have to make one for this one feature which, while annoying, isn't a show stopper.

    "You know when I can take 20,000 rows and output them in under 10 seconds to excel you should be able to as well, it's really not that hard"

    How did you do that exactly?  Pulling data from another app from within excel isn't the the same as automating excel in the other direction.

    But I have some ideas on this as well.

  • How about using Excel Report builder which then creates the data in Excel with a dynamic link back to the source data?

    This is much better than the static (and immediately out of date) data from SmartList.

    David

  • David,

    You'll note that Matt said that he already could export 20000 rows to excel in 10 seconds.  So my guess is that this is via just an excel query on the fly or an Excel Builder report (which is the same thing).

  • Yep, excel query on the fly.  See the problem is from what appears to be happening is that Dynamics GP is acting as the middle man between your data (from the database) and excel.  

    Cut out the middle man!

    Options:

    1.  Create ODC files on the fly and execute them in excel

    2.  Interact with the excel API programattically and pass it the SQL string that will pull your data.

    All cases require you to build your SQL statement, so think of Smartlist as a SQL query builder and pass those SQL statements to excel as it can do the job much faster then dexterity can.

  • "what appears to be happening is that Dynamics GP is acting as the middle man between your data (from the database) and excel"

    Not exactly - the data is in the smartlist window already.

    "..job much faster then dexterity can."

    Not Dexterity's fault specifically- the slowness comes from the COM automation.

    "Interact with the excel API programattically"

    Well, that is what dexterity is doing now.  But cell by cell.  Yes that is the slow way as you'll see in one of my upcoming blog articles.

  • Gotcha, yeah thats better stated, the slowness comes from the COM automation.  You should cut that out of the fix and just instantiate an instance of excel and send it the necessary commands + sql query string and have it pull the data.  Be much faster then setting things cell by cell.

    BTW, where is the dynamics gp 2010 CD download on partnersource?  GA is May 1, but yet nothing is available to download.  Same goes for the eConnect 2010 SDK, that download is nowhere to be found and it's past the GA date.

  • For non-SLB smartlist there isn't a SQL Query string.  Dexterity loops through the tables and then displays the data.

    But there are still solutions.

    For GP 2010, looks like published today but takes a bit to refresh externally.

    here are the links i have, didn't test them.

    https://mbs.microsoft.com/partnersource/support/selfsupport/productreleases/MDGP2010_Release_Download

    https://mbs.microsoft.com/customersource/downloads/servicepacks/MDGP2010_Release_Download

  • This is Fantastic

    Santosh Surti

  • Posting from Mohammad Daoud

    http://mohdaoud.blogspot.com/2010/05/smart-list-tree-view-space.html

  • Posting from DynamicAccounting.net

    http://msdynamicsgp.blogspot.com/2010/05/smart-list-tree-view-space.html

  • I can't get the package to work with GP 2010...is there another fix, or is the control somewhere we can get to?

  • Hi Abra

    Do you have the latest build of the Support Debugging Tool installed?

    Use Configuration Export/Import to import the settings file.

    Then log into Dynamics again and the triggers should be enabled.

    Use the Automatic Debugger Mode Status window to confirm the triggers are active.

    Once installed it should remember size and position of the window.

    Then use the menu choice to adjust the pane ratios.

    David

Page 1 of 1 (14 items)
Comments Information

PLEASE READ BEFORE POSTING

Please only post comments relating to the topic of this page.

If you wish to ask a technical question, please use the links in the links section (scroll down, on right hand side) to ask on the Newsgroups or Forums. If you ask on the Newsgroups or Forums, others in the community can respond and the answers are available for everyone in the future.

Leave a Comment
  • Please add 3 and 8 and type the answer here:
  • Post