How to STOP my ExtJS panel from duplicating itself - extjs

I have a panel "Person" and inside of this panel I create another panel "Info" with some buttons to add functionality. There is yet another panel where you can choose from a list of "Person"'s. My problem is that when you select another "Person" from the overView panel that my "Info" button gets duplicated. So if you have clicked on 6 different "Person"'s that browser session, then you will have 6 different "Info" Panels within "Person".
Any suggestions will be helpful.

What I usually do for a page with multiple selections is put the panel that gets recreated in a window. Then when you need to create another panel of the same type, you make a new window. Therefore you don't need to clear out the previous window.

Related

How to open modal wpf window scoped to a tab item

I have a use case where we have an application with a tabcontrol with 2 or more tab items . I want to be able to open a modal Window (using Window.showDialogue()) so the user is blocked to do any thing else within the active tab item from where the modal window was opened . But should be able to click on other tab item and continue to do the work .
Currently Window.showDialogue() completely blocks all user interactions until the window is closed . Is it possible to change the scope of the blocking window to just the initiating tab item ?
As an alternative , I have a overlay design to show the popup content using the Panel.Zindex and then disable the underlying controls container . But I would prefer to do the simple way of window.showdialogue().
Any help would be appreciated.
As far as I know, here is no way to block only part of a Window when calling ShowDialog. The blocking is done at the Window level by the OS. You'll have to manually disable that tab.
Be aware that if you simply put another element on top of the tab to obscure it, the user may still be able to access the controls below by using the Tab key. You might need to set IsEnabled to false, or maybe IsHitTestVisible, depending on the how you want the application to behave.

Adding a button to the end of the grouped gridview

I am looking into adding a button to the "end" of the grid view.
The idea is that I have a grouped view showing groups and items with in these groups. I only show some of the items within the group and wants to show a "load more" button at the end of the items shown.
I have tried all kinds of things in the standard grouped items page with no luck.
Any good ideas?
Thanks in advance
Kim
The simplest answer is to follow the approach used by most existing apps: Allow the user to click on the header to display all the items.
You can also add the "Load More" button as if it was a normal grid item. Then, style it differently using a different template and ItemTemplateSelector.
Finally, the most complex (and flexible) solution would be to put the "Load More" button above the GridView, and manually sync its location when the GridView is scrolled...

Grids - Action Column to behave like a Flyout Menu

I'm using ExtJS for my project and can see that there is a way to embed "actioncolumns" inside of Grid columns. However, my "action" isn't just a single click, it actually needs to show a flyout menu (similar to the Menu control). Is there a direct way to do this in Ext? Or do I have to implement all this functionality myself?
There is no direct way. You need to create a menu and show it manually in the event handler for action button. You can also show menu as a context menu for the grid (right click).

Sizing panels in an ItemsControl

I have a parent view model, that contains a collection of other view models (of same type) (children). On Initialization the number of children will be decided (varying).
The child View consists of a button and a list box. Initially the listbox is hidden. On click of button the list box appears and on clicking outside (outside of the control or any other child button).
On init only buttons will be shown. I want these buttons to be spaced across the available width. The requirement is that once the button is clicked (when listbox is shown) the width of the whole child will increase (lets say 350) and when it is hidden it reverts back to the original size.
In the parent i am using a ItemsControl to show the children views. I have tried all controls but not able to figure ou a appropriate solution for this. I have two issues:
On Button click i am able to show current listbox. If i click another button teh first one goes off. Till here it works fine. But i also need that the currentopen listbox closes on click anywhere outside of the control (child control)
How to automatically size and resize based on what is clicked . First all should be propotionately sized and then when one is clicked it's size increases (here other childs resize with the rest available space). When the one (open control) is collapsed, all of them come back to normal proptionate sizes.
Any ideas ?
BTW, i am using MVVM pattern for this.
how about using a flag to direct the view to perform calc and refresh/readjust the sizing as when needed.
like on-click routine, set the flag on
whenever the view (pre-)painting/drawing event is kicked in, check if the flag is on, do the calc and sizing, then off the flag.

ExtJS - Nested Window/FormPanel

This is sort of a subjective question, but I'd like to get some ideas on the best way to lay this out. I'll set up the situation for you.
I have a grid with a column that allows the user to "View Details" on a particular item. The grid also allows the user to select multiple rows and "View Details" on those items. When the user clicks "View Details", a Window will pop over the grid, with a form inside it and controls to navigate between the multiple items (if they selected multiple items).
Here's a picture for an example:
I have no problem creating the Window, but I'm curious as to how to handle multiple "FormPanels", if that makes sense? Would I need to create another Panel inside the container Panel for each item they have selected, and then hide/show based on the active item (shown as "Item #1" in the dropdown)?
I'm thinking of it like a deck of cards in which you can navigate through, but I've never done something like this before. Also note that each item/card will be prepopulated with information from the grid, but that should be easy enough to do if I'm using the same Store.
Thoughts?
Yes you're right, and the layout you're looking for is the CardLayout.
You can read about it in the API here. The basic idea is like you said, a stack of cards that contain components, and you shuffle through them by calling the relevant methods.

Resources