SL3 dataform validation indicators don't show in tab pages - validation

I have a Prism/SL3 application with a tab control and each page of the tab control is a "Region" that has its own view and viewModel. when I want to validate the main page, I call dataForm.ValidateItem(), then I go to all the child views and do the same. the problem is, only the pages which user has clicked on them (on the tab page), get instantiated and the pages that are never shown, don't have their view instantiated, thus I can't validate them.
any help?

I created a psuedo work around for this. It's very hacky, but it does work. My example involved walking the visual tree (up and down) to find respective controls that are invalid and then "expanding" the selected item. I have used an accordian in my example, but have also tested this with tab:
http://thoughtjelly.wordpress.com/2009/09/24/walking-the-xaml-visualtree-to-find-a-parent-of-type-t/
HTH,
Mark
EDIT: Link updated.

Related

Why do Code Line Numbers Not Show in Inspector?

Is there a way to get numbers to show for the lines in the Inspector pane? I know Chrome does this by default, but I can't see an option for this in v. 109.0 of Firefox.
Looked in settings to get numbers to show.
You're probably mixing up things here. Both browsers provide two views to the source of your page.
Live DOM view
In Firefox this is called the Inspector, Chrome's name for it is Elements.
Those are accessed by right-clicking a page and choosing Inspect from the context menu or by pressing Ctrl+Shift+C, for example.
And those don't have an option to show line numbers, as far as I know. The reason for that is that those panels show the current DOM structure of a page and not the HTML source.
That means, they show a parsed and interpreted version of the HTML source including any changes made to the structure afterwards. So, if you add an element to the structure via JavaScript, for example, those view reflect that change.
And an author doesn't gain much by seeing line numbers on such a dynamic view because they don't really refer to anything.
The use case for this view is to see and manipulate the current state of the page's DOM (Document Object Model).
HTML source view
Besides the live DOM view of a page both browsers do have a way to view the initial unchanged HTML source of a page. And those views also do show line numbers.
In both browsers this feature is accessible e.g. via the option View Page Source in the page's context menu or by pressing Ctrl+U.
Firefox:
Chrome:
The use case for this view is to see the original source of a website as it was sent from the server or loaded locally.

MAUI Show/Hide controls based on mode New/Edit/View

I need an idea, please. I have a Details form which shows the fields of a model (about 10 fields in all). There are three modes in which I could show this view - in mode "Edit", in mode "New" (which, of course, is like an edit but without values), and in mode "View" (no changes allowed, just labels).
I could of course create three Details pages, one for each mode, and call them selectively, but I would like to have just one and pass the "DocumentMode" parameter to it. That View should bind to that mode and selectively show/hide controls, probably like "DocumentMode = VIEW => Show labels" or "DocumentMode = EDIT => Show Entry or Editor, show DatePicker, TimePicker, etc".
My question is this: How do I show/hide these groups of controls depending on the DocumentMode parameter ? Which would be the best way to do this ? I could probably bind the "IsVisible" property to my documentMode parameter, but I think that is a really ugly solution (and I assume that regardless of whether the controls are used or not in a specific mode, they will all be loaded anyway).
Thank you.
Alex
I think you can use a Listview or Collectionview to represent your data because you mentioned that you have 10 fields.
In addition, you said you need a "new" button, so you can set it at the top of the app as a button, when you click the button then you jump to another page which is blank and you can add the data.
This must refer to the shell you may need to set a navigation.
Then the "view" and the "edit" you can use the property SelectionChanged to control the item, I mean when you click the item in collectionview, the SelectionChanged method can be triggered and turn to another page which can show the detail about the item you clicked. In the page you can view and edit the data.
Here are some articles you might be able to use: Listview, Collectionview, Shell
If you have more information to add, please kindly share with me.

Angular Material md-select load options in async way

I need to load select's options asynchronously (
through a service), using the Angular Material md-select component.
Actually, I use a click event to load data. It works but I need to click the select twice to show the options. That it's a problem.
The expected behavior is shown at this link (AngularJs Material)
The actual behavior is shown at this link.
Is Async options' loading supported by md-select?
The reason you need to click twice is because when you first click, there are no options in the select control and so it doesn't try and open the panel. Then your async method loads the options into the DOM and on the next click it will open.
In order to deal with this, you must always include at least one <mat-option> in your <mat-select>. You can add a disabled <mat-option> with a <mat-spinner> showing that the data is loading for example.
Here the most simple example of that. This is not the best approach... see below.
However, this still uses the click event which isn't the best approach. If you put the click event on the <mat-select> there are spots where you can click on the control but your click event wont trigger even though the dropdown panel still opens (places like the floating label area). You could put the click event on the <mat-form-field> but then there will be places where you can click and trigger the click event but the dropdown panel wont open (places like the hint/error text area). In both cases you lose keyboard support.
I would suggest using the <mat-select> openChanged event instead of a click event. This has its own quirks too but they are manageable.
Here is an example using the openChanged event. I also made the component more robust overall.
I also made a version that uses the placeholder element to show the spinner instead of using a disabled mat-option. This required View Encapsulation to be turned off.
Note: In my example, the service can return different data depending on the circumstances. To simulate this my fake service keeps track of how many requests you send it and changes the options returned accordingly. So I have to set the option list back to empty and clear the formControl's value every time the list is opened. I save the selected value before clearing the formControl so that if the service returns a list with the same item I can automatically reselect the value. If you only need to load the options once, then you would want to modify the code a bit to only load the options the first time the user opens the select.

Add buttons to sub-grid view

On the order form, there is a products section that has uses the default Order Product Inline Edit View. This view is not editable, but you can copy it and save it as a different name.
However, when you copy the view, the new view does not display all of the same buttons when viewing the sub-grid.
default view:
copied view (the lock pricing, move up and move down buttons are missing):
The copied view shows the + button and it's drop down menu correctly. Why hasn't it copied the other buttons, and how can i get them to show on my custom view?
I am happy to edit xml and upload that back to CRM if necessary.
Update:
FYI, this is all a pointless effort as the word template ignores the sequence order. What an utter waste of time.
I'm going to guess it's because the default view on the order of order products is a special one. It has special behaviours that arn't seen in the rest of 365, i.e. you don't get up, down, or lock on other views.
I would assume that the extra buttons only get shown on that default view and arn't really supported outside of that view.
Turns out it is actually quite easy to show these buttons for other views using the ribbon workbench.
Right click on the button in ribbon workbench under the subgrid section and click on customise
Select the command in the "solution elements" pane at the bottom
In the bottom right hand pane, right click on the enable rule "Mscrm.IsInlineEditView" and click "Remove from Command"
Publish
These buttons now show up for all views.

Visual Foxpro 9.0

I have a programming problem in Visual FoxPro, create a form that contains PageFrame with 2 Page.
1. On Page 1, Create a program to display data in the grid and give the sorting facilities, navigation and search.
2. On Page 2, create a program to calculate volumeTabung and spacious blanket.
Can anyone provide a solution? thank you
Although this is not DOING the answer, but a simple guide.
In the VFP command window,
Create Form [whatever form name you want]
Once form is up, look at the toolbar for "Form Controls". Click on the "PageFrame" control and then click on the form... There, you have a default pageframe with 2 pages as a default.
The "Properties" window should be visible by default. Click on the combobox on at the top which shows all controls. Open the drop-down and you will see "Page1" and "Page2" of the page frame control. Click on either page, and that will bring focus to that respective page.
Now, click on the Forms Controls toolbar again, such as to grab textbox, label, combobox, whatever and then click on the page and your controls are there. Then get focus to the second page and do the same for whatever you want.
Save and run the form. This just gets you to see the controls and how simple to put them on. Actual pulling your data and populating is really more your "to do" list.

Resources