I created a custom formatter for column in jqGrid. Is it possible to modify the parent TR of that cell? As I can see, the formatter executed before the TR with data added to the DOM so it seems like i can't get the row element by rowID.
I want to change style / CssClass of the TR based on rowObject that I receive in formatter.
You should take a look at rowattr callback (it is available since jqGrid 4.3.2) which allows to modify the row attributes during rendering. The more detailed description is available in following pull request:
Implementation of rowattr callback
Related
I have a jqgrid table in which I display my data,locally.
I need to add record,edit record and delete.I referred to Multiple jqGrid on one page, how to identify which grid on when click on "add" button on navigator? for jqgrid 4.5.4 version.
The add record doesn't work for me on jqgrid 4.6.0 version.It adds record succesfully only the first time.On subsequent attempts,The issue I am facing is,
onClickSubmit has postdata row values empty.So as result,it adds blank rows.
The code I use is exactly same as mentioned in the link above.The only change is my JSON data is :
data = [{'fname':'abc','lname':'def'},
{'fname':'efg','lname':'xyz'}]
Also,colNames and colModel looks like :
colNames:['fname','lname'],
colModel:[{'name:'fname', index:'fname', width:'40',editable: true,key:true},
{name:'lname', index:'lname', width:'60', sortable:false,editable: true}]
OnClickSubmit shows postdata with empty values for rows i.e. postdata.fname :' ',postdata.lname:' ',though I have added values in add record pop-up.Also,the add record dialog shows values in the text filled with previous values ,that were used when adding the record first time.Please help as I am really stuck up on this issue now!
Thanks,
Shweta
This issue was addressed in the jqGrid forum:
"The form edition[] does not support local editing. You can use inline edit for this purpose. See editurl option on how to point to local editing."
For inline editing, refer to jqGrid documentation.
Is there a way to update formatter on a single cell of a column dynamically. I'm able to change the formatter for the entire column using
$(jQuery('#grid').jqGrid('setColProp', 'colName', {formatter: ''})).trigger('reloadGrid')
However when I use code below the grid refreshes but with no changes.
$(jQuery('#grid').jqGrid('setCell', j, 'colName', '','',{formatter: ''})).trigger('reloadGrid')
No, the formatter is for the whole column, not a single cell. If you need this level of granularity, you will need to use a custom formatter function with logic that can somehow detect that you are in that particular cell - such as by using the row object to get the row ID.
I want to remove the pointer cursor from all non-sortable column headers in all of my jqGrids as in this answer. I currently do so for some of them in the gridComplete event.
Is there a way to set a default event, or grab all of the jqGrids on a page, and append that function the gridComplete event? I could not find anything in the options.
If you don't change the value of sortable property of the columns dynamically you don't need to do this on every grid refreshing. The columns will be created once at the creating of jqGrid. So you can just place the code which fixes the cursor on non-sortable columns after the grid definition. So you don't need to use gridComplete or any other callback.
By the way I use the word "callback" instead of "event" used in jqGrid documentation because you can define really one callback per grid. So you can't easy define somewhere in common place gridComplete with common actions and use another gridComplete in the grid definition. So if you define gridComplete as default option $.jgrid.defaults (see here) it will default till you not overwrite it in the definition of some jqGrid. To fix the problem I posted detailed suggestion how to extend functionality of jqGrid to support real events. Later I posted pull request with the changes. After long discussion the functionality is included in the code of jqGrid. So the next version jqGrid (which should be published in a short time) will do have support events additionally to callbacks.
I have 2 grids. in both of them i use loadonce:true .
In the first grid i have a cell with an onblur event which
opens a dialog with the second grid.
after i edit the second grid i want to save as xml it's content and
ascribe it to the row of the first grid (the row witch opened the dialog).
In the end i want to generate an xml from the first grid that will
include the xml I generated before in the second grid.
so what is the best way to implement this?
Thank's In Advance.
Depend on how exactly you implement the scenario which you describe you could has any data in the internal data parameter of jqGrid existing always if one use local datatype or loadonce:true in your case.
Direct accessing to the data parameter per jQuery("#grid_id").getGridParam('data') get your reference to the data array. The data array contain all data of the grid (not only the current displayed page) and the data are not yet placed in the <td> element. So the data are unmodified and could contain for example any XML fragments.
UPDATED: To make you easier to understand what I mean I made the small demo. If you double-click on a row you will see the XML data associated with the row.
The "note" column can be hidden. Because all hidden columns exist in grid as HTML markup I made it visible. You can see the difference what can be saved as grid internal data and what can be displayed (also as hidden data).
UPDATED 2: You can consider to use autoencode:true option in your grids.
I use two grids at one PHP page.
Is there any way to get data from the first grid (i.e. after click row) and pre-fill it into the add new row form in the second grid?
thank you for any suggestion Petr
I am not sure that I correct understand what you mean under the "pre-filling". But how I understand you question you can do following:
With respect of onSelectRow event which you define on the first grid you will receive the id of selected row as the parameter. Inside of the onSelectRow event handle you can call getRowData to get full information about the data of selected row. Then using addRowData for example you can add new row in the second grid.