Editing on the go

1
Hi Mendix Community,   I was wondering how some of you are doing quick changes without having to open a new form. We currently use a template grid with a form loader, the attribute in the form loader has an onchange microflow to do quick value changes without opening another form. I know the list view is also an option, but only for small lists, when having a list view with thousands of records editable it makes the system slow as the list view loads in every record. There is also the option of using the grid with an editable column with a before commit microflow on the entity, but when tabbing through the records, it losses the last value entered.   The problem we are facing at the moment is that we can’t upgrade to the latest mendix version as the form loader we are using is not supported.   Regards, Vincent
asked
2 answers
2

You have a few options:

  1. Firstly, there is a widget in the App Store called Dataview Loader which functions just like the form loader. It may function as a drop-in replacement for newer releases.
  2. Another option is to edit the list view with JavaScript to enable paging in editable mode. Then you can add the Pagination widget from the List View Controls package. I’ve done this a few times now without any issues, but I cannot guarantee it will work perfectly in all cases. To implement, drop an HTML Snippet widget, directly below the List View. Set it to JavaScript mode, and use the script below. Edit page size variable as desired.

 

Edit: fixed code. Testing working in 7.23.5

var pageSize = 10;
var lv = dijit.registry.byNode(this.domNode.previousSibling);
lv.page = pageSize;
lv._datasource._pageSize = pageSize;

 

answered
0

Try rolling your own in an HTMLSnippet

 

    mx.ui.openForm(
        "MODULENAM/PAGENAM.page.xml",
        {
        	location: "node",
        	context: this.mxcontext,
        	title: 'le title',
        	domNode: this.domNode,
        	callback: function(form) {
        		console.log(form.id);
        	},
        	error: function(e) {
        		console.log(e);
        	}
        }
    );

 

answered