My application has a treeTable under Primfaces 6.1.1. Currently the application is using RequestContext.getCurrentInstance().update("myFormId:myTreeTableId") to update the display of the whole TreeTable.
Due to performance issue when the TreeTable contains so many nodes, I would like to update only the display of relevant rows/nodes. I've tried to update the display of TreeTable by row-ID like RequestContext.getCurrentInstance().update("myFormId:myTreeTableId_node_0_0") where myFormId:myTreeTableId_node_0_0 is the ID of the relevant <tr> as I inspected by the Developer Tool of IE 11. However, the update doesn't have any effect, the display of the relevant row on the TreeTable doesn't change although the state of the associated TreeNode in the backend has been changed.
I could only manage to update the display by table cells using the ids of <td> tags like RequestContext.getCurrentInstance().update("myFormId:myTreeTableId:0_0:columnId") where 0_0 is the rowKey of the associated TreeNode.
Is there any way to update the display of certain rows in TreeTable including their selected state (checkbox)?
Thanks.
Related
I am developing a Power App using the Teams version. We have two tables in Dataverse acting as the main data sources. There is an inheritance relationship between these two tables, where one holds parent objects and the other child. I have an overview screen which displays a single record and it is important that a user can select both parent and child records from a single combobox and have the data associated to the selected record displayed.
In order to achieve this I have a collection which holds the ID and Parent/Child type of each record to form a full list of records from both tables. Collection is built as follows:
ClearCollect(Collection_RecordSelect,AddColumns(ShowColumns(record_parents,"recordID","recordID_numeric"),"type","parent")); Collect(Collection_RecordSelect, AddColumns(ShowColumns(record_children,"recordID","recordID_numeric"),"type","child"));
When a user selects a record from the combobox, the ID value from the collection is looked up against the respective data source to get the rest of the data for the record.
The issue I have now is, when a user makes a change to a record in another screen, the app returns to this overview screen to show the record they have just changed. To achieve this I used the DefaultSelectedItems property of the combobox which looks at a selectedRecord variable containing the record ID as a string, set after a user changes the record in another screen. As the combobox requires a record, the combobox uses the selectedRecord variable to Lookup into the collection I referenced earlier to get the full record, unless it's blank in which case it default to the first record. Shown below:
If(IsBlank(selectedRecordID),First(Collection_RecordSelect),Lookup(Collection_RecordSelect, recordID = selectedRecordID))
This results in the combobox displaying two instances of the selected record and showing the old version of the record before the user made changes on the overview screen. If you select another record, the duplicate disappears. If you select the other duplicate record in the combobox, the user's changes are then shown on the overview screen.
Screenshot of duplicate record in combobox.
I have tried creating a single collection, containing all records from both tables, however as they are slightly different due to the inheritance field in the child table they don't merge properly and data is missed. Unfortunately, I need the inheritance field on the overview screen so I can't use ShowColumns and remove it.
I have recently re-built the app in Teams as opposed to standard Power Apps. This solution worked fine in the standard Power Apps environment, so I have a suspicion it may be a bug with the Power Apps for Teams combobox? Unless I am making a mistake, I think this is probably true as I've just tested and the "Classic Control" combobox doesn't have the same behavior, shame because it looks rubbish compared to the Teams one!
I have turned off multi-select on the combobox and search and the problem still exists.
Any help would be hugely appreciated!
I have many telerik rad grids in my project .
It initialize with ability to have client side row selection with
<clientsettings>
<Selecting AllowRowSelect="True" />
</clientsettings>
it is ok and in first load when my paging selector is on 10 object per grid selecting works fine , but when I change page size to 20 or 50 selecting suddenly stops working and I can not select row as before . Can anyone help me with this ?
RadGrid loses its current selection on postback - e.g. when the data is sorted, a new
group or filter is added, or when the current page changes.
You can try following approaches to implement a way to persist the client-side selection. (sample code snippet is in the attached link)
Using Web Storage
Using JavaScript array
The following logic is used to persist the selected rows:
Handle OnRowSelected and OnRowDeselected events for RadGrid. In the handlers you should update the collection of the selected items.
Handle OnRowCreated event. In this handler you should check if the current item is present in the selected rows collection and select
it if necessary.
For full details, please check this article - Persisting the Selected Rows Client-side on Sorting/Paging/Filtering/Grouping
I am creating a maintenance page where I want to select a task using browser UI component. What I want to do specifically is to filter and show only tasks that are not done yet. Can I implement this using browser UI component? Does Exact Synergy Enterprise offer other components for this functionality?
You should create your browser Repository Explorer and use it in browsefield UI component.
Go to System tab, process to Setup tab and under the Repository section click Explorer. Locate your Repository group, enter it, click Browsers tab next to Business components, Functional components, etc.
Click Add and provide Name, Caption, Caption suffix fields. Then write your SQL query in Query field. The structure is:
SELECT <column(s)> FROM <database table> WHERE <column(s)> IS NOT NULL ORDER BY <column>.
Leave the Column info field empty for now. Fill in the Result columns field with column name which will be used as a Browser component result.
Finally, add database table name in the Table list field. Click Save + Edit column info button. Edit column names from a list shown below Information section and fill in Header/Term ID field with title, describing your columns (this will be shown in Browser UI for the front-end user). Click Save and test your newly created browser. If something went wrong, repeat steps from the start. Most of the time problem could be wrongly filled Column info field.
Now go to your ASPX page and add browsername attribute to your browsefield UI component. Doing so will set the browserfield component to your newly created browser component. This is that you want to see in your maintenance page when setting up the browsefield UI component:
<ex:cardfield runat="server" id="cf" caption="Item" captionid="0">
<ex:browsefield runat="server" id="p" browsername="pbr" datasource="bc" />
</ex:cardfield>
Hope this gives you quick idea of what you need to do in order to adjust it to your situation with tasks.
Currently, my report is set up with a Child table placed in a row of a Parent table. Each row of the child table has a Grid element that allows me to have more control over the format of the report. There are several fields in the child report with varying field lengths so a Field per Column of the report won't work. Note that I am only setting the data source of the Tables, not of the grid elements.
This works when rendering to HTML, however, when rendering to a PDF file a page break appears just before the row containing the child page.
Things I have tried to resolve the issue with:
Setting page breaks to "Avoid"
Setting the page break interval to something high
Tested with 2.6.2 and 3.7.2. 4.2 currently will not run on my machine.
When you using a column for each field in the table instead of a Grid element in a single cell, the problem goes away but this is undesirable as there are multiple fields with varying field lengths. Merging multiple cells to make room for the different lengths does work, but it can become unruly when you need to change the report format.
The size of the grid/table does not matter - this happens even when I am only using a couple fields from the data set.
After some more experimentation, I found out that if I remove all Detail Rows of the Parent table that are before the Child Table row, the report is created properly. Unfortunately I need to have rows of information ahead of the Child Table so this does not solve the issue.
Does anyone have a solution?
I've recently started using Expression Sketchflow to prototype some user interface designs. I currently have a master datagrid at the top of the page, which I would like to allow the user when selecting a particular grid row to see a sub-datagrid below be populated with specific data relevant to that specific row of master data.
Could anyone shed some light on the subject!?
Help greatly appreciated.
I figured out how to do this by reading this article:
Expression Blend 3 – secrets of working with data.
Here's the basic steps (you already did a couple it sounds like)
Create your sample data set
Under the Data tab select the List Mode and drag your collection onto the screen, a list view of your data will be created (Master datagrid)
Now, select the Details Mode and drag and drop your collection onto the screen where you want the details to be displayed. (sub datagrid)
Tweak the fields displayed by dragging properties into the respective containers or modifying the XAML / Bindings list
If you have a child collection in your data, you may have to jump through a few more hoops.