JQGrid-Trirand. How to Edit Fields? - jqgrid

I have one page where i have bind data by using JqGrid, but My requirement is In editing one row of a grid, the editable fields must NOT BE builtin fields( builtin textboxs) i want to bind that to other textboxes, check boxes which are outside grid. The data which i want to edit must be supplied to other input controls other than jqgrid builtin input controls, Finally IS THIS POSSIBLE???
Hope iam clear with my question.
Please do help me in reply saying either YES or NO or How, and why.
edited

I am not sure that I understand correctly what you mean, but it seems that you should just use form editing mode. To activate it on the client side you should just add editable: true property to all columns which are editable or use the option cmTemplate: {editable: true} which makes default value of editable for all columns as true. After it you can for example use navGrid to add Add, Edit and Delete buttons in the pager. The functionality on the client side will be ready after that. Now you have to implement editing part in the server code only. If you use commercial version of jqGrid like jqSuite you should address to the documentation or demos for more details.

try this
http://www.trirand.net/examples/grid/selection/selectedrow_client/default.aspx
or
Try this
<ClientSideEvents BeforeEditDialogShown="beforeEdit"/>
<script type="text/javascript">
function beforeEdit(rowID) {
var grid = jQuery("#<%= JQGrid1.ClientID %>");
lastSelectedRow = grid.getGridParam("selrow");
};
</script>

Related

how can i get inbuilt value during Add process of jqgrid?

I am using jqGrid and when I want to enter new values,I click on Add(+) button which is at bottom of grid.I have 7 filed and out of them 1 is dropdown list so,
whenever I want to add new record I want that dropdown field to be filled automatically. How do I achieve that ?
I'm not sure what you exactly mean. Du you use inline editing (inlineNav) or form editing (navGrid)? Which version of jqGrid you use and from which fork of jqGrid (free jqGrid, which I develop, commercial Guriddo jqGrid JS or an old jqGrid in version <=4.7). You wrote about "dropdown field to be filled automatically", but the information can be interpreted in different ways. I try to guess.
I suppose that you should include defaultValue in editoptions to fill (or to choose in the dropdown) the default value in the filed new filed. It will work in case of usage form editing. It could work in some cases of usage inline editing (inlineNav) too, but one should know more details about your implementation.

Condtional editable depend on the value in colModel jqGrid

I am trying to put editable value either true or false depend on the value of the cell in colModel. Is there is any way to do that?
{name:'keywords',index:'keywords', width:150, editable:true,edittype:'select',
editrules:{required: true},
editoptions:{value:{'one':'one','two':'two','three':'three','four':'four'},size:5} },
In this I want to set editable:false if the cellvalue exist else editable:true and editoptions:{value:{'one':'one','two':'two',...} for a particular cell.
The most easy way to implement the requirement would be to use free jqGrid. It's the fork (based on jqGrid 4.7) which I develop currently. Because of such requirements I implemented the feature described in the wiki article. It allows to define editable property as function. So you need just to define the callback from which you returns true or false base on any your custom criteria. The callback editable get many information about the context of execution as properties of the only parameter. The rowid, iRow, iCol and name properties allows you to use getLocalRow or getCell to get contain of any column of the row. So you can enable editing selectively in very simple way.
If you can't upgrade to free jqGrid then you can use old tricks which are specific for the editing mode which you use. I can forward you to the answer which can be used in case of form editing and this one which can be used in case of form editing if you call editRow directly. In case of usage inlineNav or formatter: "actions" there are alternative solutions which you can find also in my old answers.

Redirect to jqGrid edit form directly without displaying the grid

Often I need to edit a single record in a database without the need to display the grid at all. I can hide the grid using CSS or jQuery. What I couldn't figure out is to directly go to the edit form from another webpage while hiding the grid.
I know it's kind of defeating the purpose of having a grid, but it's one of those cases where only a single record should be view and modified by the users similar to the Access single record mode. Is it even possible?
In general you can just hide so named "gbox" created over the grid and then call editGridRow method with the options which you like to have. As the result you will have the form which close to what you want. I am sure that you have to make some other small problems, but the first look can be like you want. Moreover you can scroll over the rows during editing.
The demo demonstrate what I mean. It displays the following form
The demo uses the following code
$("#list").jqGrid({
...
loadComplete: function (data) {
$(this).jqGrid("editGridRow", data.rows[0].id, {
modal: true,
overlay: 0, // create no overlay
onClose: function () {
return false; // don't allow to close the form
}
});
}
}).closest(".ui-jqgrid").hide();
This is one of the reasons I like to use my own custom edit forms, instead of the one built into jqGrid. Then you can just open it like you would from the jqGrid handler (with appropriate parameters of course), no grid required.

Post non editable values in jqGrid?

I'm using jqGrid, and I would like to post non editable values to the server. I'm editing row by row (not form). Is that possible?
The column is visible, and I'm using inline editing. The data is posted using "editurl" property of the grid.
** Solution **
I solved it in a completely different way, by not using jqGrids setCell, but instead setting the textbox value using document.getElementById(selr + "_Verksamhetskod").value = data.
Not exactly what I had in mind initially, but it works...
Just add that to your cell configuration:
editable: true, editoptions: {disabled: true}
Well if I'm understanding correctly you are trying to make a cell become read-only once it has a value but still be in a format where you can post to the server correctly.
You could use Jquery to place a read-only attribute on each input field
$("#PrimaryKey".columnName").attr("disabled", true)
and either fire this code if there is a value in the input field or after an input has been entered.

jqGrid onselectrow

I'm using a jqGrid, and it gets populated fine. From the UI perspective, one of the columns in the jqGrid is editable. How can I make one of the columns as editable (say like a text box)?
The reason is, in my case when the grid successfully loads, the UI is going to show one of the column's values as editable.
If you're looking to edit the column values directly in the grid, similarly to how you might in Excel, look into the inline editing API:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing&s[]=inline
In colmodel, you have to specify editable: true.Provide edit action link in editURL:... option of jqgrid.
you have to get the "id" of that column and then remove 'disabled' attribute on that.
for example -
$('#idofthatcolumn').removeAttr('disabled');
OR
$('#idofthatcolumn').removeAttr('readonly');
In your colmodel you should specify editable as true i.e, editable:true and specify the editUrl:'localhost:8080/yourApp'
Also if you want to store it in the client side, then specify it as editUrl:'clientArray'

Resources