Datatable in PrimeFaces does not show the SortBy arrows - sorting

I had already made ​​several pages of my PrimeFaces project that showed a DataTable with SortBy function and worked perfectly, but now, i notice, i don't know why, in all my project, DataTables does not appear Sort function. Not even see the arrows in the headers, and you can not click on the headers .... is as if I had accidentally disabled in some way, the possibility that they may have the function Sort.
I tried to make a new project and if it works Sort perfectly, so it must be due to something I've added it in the last source code modifications, but I have no idea what can be.
Can anyone help? Any idea what may be the reason why in the datatables not display the Sort function?

Related

Kendo UI Grid inline edit not work when use ObservableArray as data for data source

I'm trying to use a kendo.data.ObservableArray as data for data source of the grid. It shows ok. When edit inline, change a field, then cancel, the values are changed. When clicking edit, then click edit on another row, the last one remains in the edit mode. Sometimes cancel not work. On the array it works as expected.
I took the Kendo UI Demo, http://demos.telerik.com/kendo-ui/grid/editing-inline, to reproduce the issue. Here is the issue: http://dojo.telerik.com/uLiCi/2
Does anyone have any idea why so strange behavior?
In my opinion, it should work with both, array and observable array.
Thanks in advance

Bug in Kendo DropDownList release 2015.1.318

've just tried giving the latest release of Kendo UI a spin, but it seems something has broken when using a DropDownList in a custom popup editor.
If the dataSource of the DropDownList is set to a JavaScript array or object, the selected value does not update the Grid model.
DropDownLists that have a remote dataSource with dataTextField and dataValueField configured are working okay.
Basically, code that worked perfectly with the 2014.3.1316 release is not working with the 2015.1.318 release (no errors are reported in Chrome's console).
Can somebody please confirm that this is a bug with the new release, or is there something else I need to be aware of?
EDIT: This is seems to be affecting all DropDownLists. The selected item is not updating the model immediately -- only when the record is saved.
I've knocked together a simple Fiddle to demonstrate the issue. With the previous version, selecting an item updates the Grid's model immediately and set's dirty to true. With the new version, the Grid's model isn't updated (at least not immediately).
The described issue is a known bug in Q1 2015 - BUG 623.
It is addressed in the latest internal builds and the upcoming service pack, that will be released till the end of week, will include the fix (and many more)
I am afraid that there is no simple workaround, as the widget just sets its "_old" value to the new one on first select. Hence the change event will not be raised. The only feasible solution is to upgrade to a newer version of Kendo UI.
When it comes to the dropdownlist and multiselect controls they have changed a lot to allow the new grouping and virtualization features to work. (having been a victim of this change as well - I'm still trying to fix my code at the minute)
I have updated your fiddle with a possible solution for what you want to achieve Update with Change Event added
I have basically added this function for you:
function changeCategory(e)
{
$('#log2').text('This should be the ID of the category you changed too: '+
e.sender.value());
}
but for more information on this change you can look here:
Changes to Kendo UI Q1 2015
EDIT:
Also if my memory is correct I think the select event is fired before the change event so that will always show the previous value and not the new value that has been selected and when you click update the grid is updating as expected from what I can see.
just try to specify a defaultValue in your schema model definition to CategoryID, i think this would be a better solution, couse this bug occurs only when the value is empty
The Changes to Kendo UI Q1 2015 page doesn't directly mention the change in behavior described, but it's likely to be caused by the substantial changes to the DropDownList widget.
There's a pretty simple workaround, but I suspect it shouldn't be necessary and will be 'fixed' at some point.
To emulate the old behavior you just need to manually set the model field that's supposed to be updated immediately. So in the select event add something like...
model.set('CategoryID', dataItem.CategoryID);
Updated Fiddle. Without doing this, any dependent methods will use the original or old value, which is simply not right (hence, I suspect it'll be fixed).
I also experienced the problem with dropdown lists with the 2015.1.318 release.
In the latest release, 2015.1.327, this seems to be fixed.

Kendo UI TabStrip e.preventDefault() doesn't work

Two problems:
1.)
e.preventDefault() doesn't work correctly with Kendo UI TabStrip when somewhere
$("#tabstrip").kendoTabStrip().data('kendoTabStrip');
appears.
2.)
Imagine the User clicks on another tab, but has unsaved changes.
A dialog pops up and ask if he wants to discard the changes and go to the tab or
if he wants to stay on the active tab to save his changes.
My solution doesn't work. Because of the 1. Problem I guess and because
.data() somehow reinitialises the TabStrip?! What is wrong?
Here is a (not) working example
http://jsfiddle.net/Nakkvarr/w9586/
Any ideas on this issue?
The reason it doesn't work for the first tab is because you initialized the tab strip twice on the same element $('#tabstrip'). Since you bound the select event on the first initialization, the subsequent initialization overwrote it (the select event isn't handled anymore). You even answered the problem yourself by stating that it works if you comment the second initialization line out.
I'm not entirely sure what you're trying to accomplish with the setTimeout() function in the second example. It's unnecessary.
Using e.preventDefault() works as expected. JSFiddle: http://jsfiddle.net/w9586/6/

jqgrid click local data column sort (client-side only) wipes userData on grid refresh

I have a grid that is populated by a JSON response (MVC3 controller) that has a userData component for some additional data for grid captions, etc. All that works just fine. I recently switched the the grid's data loading to "loadonce: true" as in working with larger grid results sets, I wanted client-side sorting and filtering. All that works good. BUT, I was surprised that the userData got wiped the first time I clicked any column for sorting. If I turn off loadonce, userData is fine, but it is of course going back to the server each time. The items that make use of the userData fire on gridcomplete and are now coming back "undefined" after a sort (and probably anything that reloads the grid). Any thoughts why this might be happening? Oh yeah, I also noticed that clicking a column sort wiped out any multiselections (perhaps related to the same culprit?).
Thanks,
Mark
You are right. +1 from me. It's a jqGrid bug. Inside of internal addLocalData method after the line 1527 of the file grid.base.js of jqGrid 4.1.2 or after the 1532 of jquery.jqGrid.src.js (you can get modified version from here) one should add the following line
retresult[ts.p.localReader.userdata] = ts.p.userData;
It will fix the problem. I posted the corresponding bug report here.

jQuery, AjaxForm and success option

I'm using the jQuery Form plugin and more specifically the ajaxForm method to hijack a normal form and post it using ajax. I have a form with lots of rows. Each row has edit and delete options and each section has an add option. Hijacking the form I can work out on the server whether to add, edit or delete but would like the ability to know which button was pressed in the success method back in my JS. Is this possible?
I know there are two params: responseText and statusText and that I can work out the button type in beforeSubmit but I need it when the data is returned which button has been pressed. The reason is that I want to display a form in a light box for edit and add but for delete I want to do something different. It seems a bit naff to check the data coming back to look for a certain string (not to mention flakey and unmaintainable).
Anyone know of a simple solution?
Look at the beforeSubmit option: it's a function that will get called, well, before submit. More importantly, it provides the data. You could look at the data and set a flag that would then be used within the success function. This isn't beautiful, but better than being coupled to the server's behavior.
In this situation, I have often just created two different forms-- one for update and one for delete. Then, instrument them separately.

Resources