jQWidgets Forums
jQuery UI Widgets › Forums › Grid › Grid with command(Edit,Save,Cancel) button
Tagged: Button, command, command button, Command Column, edit, editing, grid, jqxGrid ;
This topic contains 12 replies, has 3 voices, and was last updated by Akhil 5 years, 7 months ago.
-
Author
-
hi,
Can u help me create grid with command button. I have taken reference from Datable command button.
I need update,save and cancle button in each row. when user click on edit, row should become editable.
but it not working.`<!DOCTYPE html>
<html lang=”en”>
<%@ taglib prefix=”form” uri=”http://www.springframework.org/tags/form”%>
<%@ taglib prefix=”spring” uri=”http://www.springframework.org/tags”%>
<head>
<title id=’Description’>In order to enter in edit mode, select a grid row, then “Click” or press the “F2″ key. To cancel the editing, press the “Esc” key. To save
the changes press the “Enter” key or select another Grid row.</title>
<link rel=”stylesheet” href=<spring:url value=”/jqwidgets/styles/jqx.base.css”/> type=”text/css” />
<script type=”text/javascript” src=<spring:url value=”/scripts/jquery-1.11.1.min.js”/> ></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcore.js”/> ></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdata.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxbuttons.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxscrollbar.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxmenu.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.edit.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.selection.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxlistbox.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdropdownlist.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcheckbox.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcalendar.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxnumberinput.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdatetimeinput.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/globalization/globalize.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/scripts/demos.js”/>></script>
<script type=”text/javascript”>
$(document).ready(function () {
// prepare the data
var data = ‘${departmentList}’;
var source =
{
localdata: data,
datatype: “json”,
updaterow: function (rowid, rowdata, commit) {
// synchronize with the server – send update command
// call commit with parameter true if the synchronization with the server is successful
// and with parameter false if the synchronization failder.
commit(true);
},
dataFields: [
{ name: ‘departmentId’, type: ‘int’ },
{ name: ‘departmentName’, type: ‘string’ },
{ name: ‘status’, type: ‘bool’ }
]
};
var dataAdapter = new $.jqx.dataAdapter(source);
// initialize jqxGrid
$(“#jqxgrid”).jqxGrid(
{
width: 850,
source: dataAdapter,
editable: true,
selectionmode: ‘singlerow’,
// editmode: ‘selectedrow’,
// editSettings: { saveOnPageChange: true, saveOnBlur: true, saveOnSelectionChange: false, cancelOnEsc: true, saveOnEnter: true, editOnDoubleClick: false, editOnF2: false },
/*rendering: function()
{
alert(“rendering”)
// destroys all buttons.
if ($(“.editButtons”).length > 0) {
$(“.editButtons”).jqxButton(‘destroy’);
}
if ($(“.cancelButtons”).length > 0) {
$(“.cancelButtons”).jqxButton(‘destroy’);
}
},*/ Not availablle in grid so that commented
// called when jqxDataTable is going to be rendered.rendered: function () {
alert(“rendere”)
if ($(“.editButtons”).length > 0) {
$(“.cancelButtons”).jqxButton();
$(“.editButtons”).jqxButton();var editClick = function (event) {
var target = $(event.target);
// get button’s value.
var value = target.val();
// get clicked row.
var rowIndex = parseInt(event.target.getAttribute(‘data-row’));
if (isNaN(rowIndex)) {
return;
}
if (value == “Edit”) {
// begin edit.
target.parent().find(‘.cancelButtons’).show();
target.val(“Save”);
$(“#jqxgrid”).jqxGrid(‘beginRowEdit’, rowIndex);
}
else {
// end edit and save changes.
target.parent().find(‘.cancelButtons’).hide();
target.val(“Edit”);
$(“#jqxgrid”).jqxGrid(‘endRowEdit’, rowIndex);
}
}
$(“.editButtons”).on(‘click’, function (event) {
editClick(event);
});$(“.cancelButtons”).click(function (event) {
// end edit and cancel changes.
var rowIndex = parseInt(event.target.getAttribute(‘data-row’));
if (isNaN(rowIndex)) {
return;
}
$(“#jqxgrid”).jqxGrid(‘endRowEdit’, rowIndex, true);
});
}
},
pagerButtonsCount: 8,
columns: [
{ text: ‘Department Id’, columntype: ‘textbox’, datafield: ‘departmentId’, width: 80 },
{ text: ‘Department Name’, datafield: ‘departmentName’, columntype: ‘textbox’, width: 80 },
{ text: ‘Status’, columntype: ‘checkbox’, datafield: ‘status’, width: 195 },
{
text: ‘Edit’, cellsAlign: ‘center’, align: “center”, columnType: ‘none’, editable: false, sortable: false, dataField: null, cellsRenderer: function (row, column, value) {
// render custom column.
return “<button data-row='” + row + “‘ class=’editButtons’>Edit</button><button style=’display: none; margin-left: 5px;’ data-row='” + row + “‘ class=’cancelButtons’>Cancel</button>”;
}
}]
});});
</script>
</head>
<body class=’default’>
<div id=”jqxgrid”></div></body>
</html>Hello Chaitanya,
Please check out the jqxGrid mobile demo Editing, which demonstrates the required functionality.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hello,
Thanks.. i used this example. but
When row is in edit mode and click outside of grid, row become non editable and still update/cancel link is visible.(This is also happening in your example)
Also by clicking edit button, focus should be 1st column. How to do this.There is command button example in DataTable and TreeGrid but why not in grid???
Hi Chaitanya,
jqxGrid may look similar to jqxDataTable and jqxTreeGrid but not all of their functionalities are the same. That is why you need to use workarounds, such as the following one, which eliminates the “outside click” issue. However, when a full row edit is invoked programmatically, you cannot select which cell to be initially focused.
<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="../styles/demo.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.base.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.windowsphone.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.blackberry.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.mobile.css" type="text/css" /> <link rel="stylesheet" href="../../jqwidgets/styles/jqx.android.css" type="text/css" /> <script type="text/javascript" src="../../scripts/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxcore.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdata.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxbuttons.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxscrollbar.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxlistbox.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdropdownlist.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxmenu.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxcalendar.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxdatetimeinput.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxcheckbox.js"></script> <script type="text/javascript" src="../../jqwidgets/globalization/globalize.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.pager.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.selection.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.edit.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.sort.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxgrid.filter.js"></script> <script type="text/javascript" src="../../jqwidgets/jqxpanel.js"></script> <script type="text/javascript" src="../simulator.js"></script> <script type="text/javascript" src="../../demos/jqxgrid/generatedata.js"></script> <script type="text/javascript"> var that = this; $(document).ready(function () { // prepares the simulator. var theme = prepareSimulator("grid"); var data = generatedata(50); this.editrow = -1; var source = { localdata: data, datatype: "array", updaterow: function (rowid, rowdata, commit) { // synchronize with the server - send update command // call commit with parameter true if the synchronization with the server is successful // and with parameter false if the synchronization failder. commit(true); }, datafields: [ { name: 'name', type: 'string' }, { name: 'firstname', type: 'string' }, { name: 'lastname', type: 'string' }, { name: 'productname', type: 'string' }, { name: 'available', type: 'bool' }, { name: 'quantity', type: 'number' }, { name: 'price', type: 'number' }, { name: 'date', type: 'date' } ] }; var dataAdapter = new $.jqx.dataAdapter(source); var out = false; // initialize jqxGrid $("#grid").jqxGrid( { width: 800, height: 600, source: dataAdapter, editable: true, columnsheight: 40, columnsmenuwidth: 24, rowsheight: 34, theme: theme, sortable: true, selectionmode: 'none', editmode: 'selectedrow', columns: [ { text: 'Name', columntype: 'textbox', datafield: 'name', width: '30%' }, { text: 'Product', width: '40%', columntype: 'textbox', datafield: 'productname' }, { text: 'Edit', align: "center", editable: false, sortable: false, datafield: 'available', cellsrenderer: function (row, column, value) { var eventName = "onclick"; if ($.jqx.mobile.isTouchDevice()) { eventName = "on" + $.jqx.mobile.getTouchEventName('touchstart'); } if ((row === that.editrow) && out === false) { return "<div style='text-align: center; width: 100%; top: 7px; position: relative;'><a " + eventName + "='Update(" + row + ", event)' style='color: inherit;' href='javascript:;'>Update</a><span style=''>/</span>" + "<a " + eventName + "='Cancel(" + row + ", event)' style='color: inherit;' href='javascript:;'>Cancel</a></div>"; } return "<a " + eventName + "='Edit(" + row + ", event)' style='color: inherit; margin-left: 50%; left: -15px; top: 7px; position: relative;' href='javascript:;'>Edit</a>"; } } ] }); $("#grid").click(function (event) { event.stopPropagation(); }); $(document).click(function () { out = true; $("#grid").jqxGrid('beginrowedit', that.editrow); $("#grid").jqxGrid('endrowedit', that.editrow, true); that.editrow = -1; out = false; }); }); </script> <style type="text/css"> a:link { font-size: 16px !important; } </style> </head> <body class='default'> <div id='grid'> <script type="text/javascript"> function Edit(row, event) { that.editrow = row; $("#grid").jqxGrid('beginrowedit', row); if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } function Update(row, event) { that.editrow = -1; $("#grid").jqxGrid('endrowedit', row); if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } function Cancel(row, event) { that.editrow = -1; $("#grid").jqxGrid('endrowedit', row, true); if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } </script> </div> </body> </html>
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hi Dimitar,
Thanks for ur reply. I have inner command button(Editing Example Mobile Demo) and tooltips having add button.
On click tooltips add button, new empty row at 0 index is added. This record is not yet saved in db so department id in null. At that point if user click on cancel button which is at inner row, row should get deleted.
This point issue occuring:
When click cancel button: Source updateRow function is called(Dont know why this happening), which should not called. May be because of this, row get delete(code for this have written in cancle function.), but row at index 1 become empty.
And, As u said cursor automatically come in full row edit mode. but it is not happening.
<!DOCTYPE html>
<html lang=”en”>
<%@ taglib prefix=”form” uri=”http://www.springframework.org/tags/form”%>
<%@ taglib prefix=”spring” uri=”http://www.springframework.org/tags”%>
<head>
<title>Department Master</title>
<link rel=”stylesheet” href=<spring:url value=”/jqwidgets/styles/jqx.base.css”/> type=”text/css” />
<script type=”text/javascript” src=<spring:url value=”/scripts/jquery-1.11.1.min.js”/> ></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcore.js”/> ></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdata.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxbuttons.js”/>></script>
<script type=”text/javascript” src=”<spring:url value=”/jqwidgets/jqxtooltip.js”/>”></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxscrollbar.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxmenu.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.edit.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.selection.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxlistbox.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdropdownlist.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcheckbox.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcalendar.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxnumberinput.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdatetimeinput.js”/>></script>
<script type=”text/javascript” src=<spring:url value=”/jqwidgets/globalization/globalize.js”/>></script>
<script type=”text/javascript” src=”<spring:url value=”/scripts/demos.js”/>”></script>
<script type=”text/javascript”>
var that = this;
$(document).ready(function () {
// prepare the data
var data = ‘${departmentList}’;
var source =
{
localdata: data,
datatype: “json”,
updaterow: function (rowid, rowdata, commit) {
alert(“update”+rowdata.departmentId)
// synchronize with the server – send update command
// call commit with parameter true if the synchronization with the server is successful
// and with parameter false if the synchronization failder.
// rowdata.departmentId=101;
commit(true);
},
dataFields: [
{ name: ‘departmentId’, type: ‘int’ },
{ name: ‘departmentName’, type: ‘string’ },
{ name: ‘status’, type: ‘bool’ }
]
};
this.editrow = -1;
var dataAdapter = new $.jqx.dataAdapter(source, {
loadComplete: function () {
// data is loaded.
}
});
// initialize jqxGrid
$(“#jqxgrid”).jqxGrid(
{
width: ‘50%’,
height: ‘50%’,
source: dataAdapter,
editable: true,
rowsheight: 34,
selectionmode: ‘none’,
editmode: ‘selectedrow’,
altRows: true,
showToolbar: true,
renderToolbar: function(toolBar)
{
var toTheme = function (className) {
if (theme == “”) return className;
return className + ” ” + className + “-” + theme;
}
// appends buttons to the status bar.
var container = $(“<div style=’overflow: hidden; position: relative; height: 100%; width: 100%;’></div>”);
var buttonTemplate = “<div style=’float: left; padding: 3px; margin: 2px;’><div style=’margin: 4px; width: 16px; height: 16px;’></div></div>”;
var addButton = $(buttonTemplate);
container.append(addButton);
toolBar.append(container);
addButton.jqxButton({cursor: “pointer”, enableDefault: false, height: 25, width: 25 });
addButton.find(‘div:first’).addClass(toTheme(‘jqx-icon-plus’));
addButton.jqxTooltip({ position: ‘bottom’, content: “Add”});addButton.click(function (event) {
if (!addButton.jqxButton(‘disabled’)) {
that.editrow = 0;
// add new empty row.
$(“#jqxgrid”).jqxGrid(‘addRow’, null, {}, ‘first’);
// select the first row and clear the selection.
$(“#jqxgrid”).jqxGrid(‘clearSelection’);
$(“#jqxgrid”).jqxGrid(‘selectRow’, 0);
// edit the new row.
$(“#jqxgrid”).jqxGrid(‘beginRowEdit’, 0);
updateButtons(‘add’);}
});
},
pagerButtonsCount: 8,
columns: [
{ text: ‘Department Id’, columntype: ‘textbox’, editable:false, datafield: ‘departmentId’, width: “20%” },
{ text: ‘Department Name’, datafield: ‘departmentName’, columntype: ‘textbox’, width: “20%” },
{ text: ‘Status’, datafield: ‘status’, columntype: ‘checkbox’, width: “20%” },
{
text: ‘Edit’, align: “center”, editable: false, sortable: false, datafield: ”, cellsrenderer: function (row, column, value) {
var eventName = “onclick”;
if (row === that.editrow) {
//return “<div style=’text-align: center; width: 100%; top: 7px; position: relative;’>Update<span style=”>/</span>” + “Cancel</div>”;
return “<button ” + eventName + “=’Update(” + row + “, event)’ style=’color: inherit; margin-left: 40%; left: -15px; top: 7px; position: relative;’ data-row='” + row + “‘>Update</button><button ” + eventName + “=’Cancel(” + row + “, event)’ style=’margin-left: 5px; left: -15px; top: 7px; position: relative;’ data-row='” + row + “‘>Cancel</button>”;
}
//return “Edit“;
return “<button “+ eventName + “=’Edit(” + row + “, event)’ style=’color: inherit; margin-left: 50%; left: -15px; top: 7px; position: relative;’ data-row='” + row + “‘ class=’editButtons’>Edit</button>”;
}
}
]
});});
</script>
<script type=”text/javascript”>
function Edit(row, event) {
that.editrow = row;
$(“#jqxgrid”).jqxGrid(‘beginrowedit’, row);
if (event) {
if (event.preventDefault) {
event.preventDefault();
}
}
return false;
}
function Update(row, event) {
that.editrow = -1;
$(“#jqxgrid”).jqxGrid(‘endrowedit’, row);
if (event) {
if (event.preventDefault) {
event.preventDefault();
}
}
return false;
}
function Cancel(row, event) {
that.editrow = -1;
$(“#jqxgrid”).jqxGrid(‘endrowedit’, row, true);
var value = $(“#jqxgrid”).jqxGrid(‘getCellValue’, row, ‘departmentId’);
if(value==null){
$(“#jqxgrid”).jqxGrid(‘deleteRow’, row);}
if (event) {
if (event.preventDefault) {
event.preventDefault();
}
}return false;
}
</script>
</head>
<body class=’default’>
<div id=”jqxgrid”></div></body>
</html>Hi Chaitanya,
Could you, please, create and share a fiddle demonstrating the issue so that we can test for it on our side? Alternatively, re-post your indented code and format it by selecting it and pressing the
code
button in the toolbar.Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hi Dimitar,
<!DOCTYPE html> <html lang=”en”> <%@ taglib prefix=”form” uri=”http://www.springframework.org/tags/form”%> <%@ taglib prefix=”spring” uri=”http://www.springframework.org/tags”%> <head> <title>Department Master</title> <link rel=”stylesheet” href=<spring:url value=”/jqwidgets/styles/jqx.base.css”/> type=”text/css” /> <script type=”text/javascript” src=<spring:url value=”/scripts/jquery-1.11.1.min.js”/> ></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcore.js”/> ></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdata.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxbuttons.js”/>></script> <script type=”text/javascript” src=”<spring:url value=”/jqwidgets/jqxtooltip.js”/>”></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxscrollbar.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxmenu.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.edit.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxgrid.selection.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxlistbox.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdropdownlist.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcheckbox.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxcalendar.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxnumberinput.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/jqxdatetimeinput.js”/>></script> <script type=”text/javascript” src=<spring:url value=”/jqwidgets/globalization/globalize.js”/>></script> <script type=”text/javascript” src=”<spring:url value=”/scripts/demos.js”/>”></script> <script type=”text/javascript”> var that = this; $(document).ready(function () { // prepare the data var data = ‘${departmentList}’; var source = { localdata: data, datatype: “json”, updaterow: function (rowid, rowdata, commit) { alert(“update”+rowdata.departmentId) // synchronize with the server – send update command // call commit with parameter true if the synchronization with the server is successful // and with parameter false if the synchronization failder. // rowdata.departmentId=101; commit(true); }, dataFields: [ { name: 'departmentId', type: 'int' }, { name: 'departmentName', type: 'string' }, { name: 'status', type: 'bool' } ] }; this.editrow = -1; var dataAdapter = new $.jqx.dataAdapter(source, { loadComplete: function () { // data is loaded. } }); // initialize jqxGrid $(“#jqxgrid”).jqxGrid( { width: ’50%’, height: ’50%’, source: dataAdapter, editable: true, rowsheight: 34, selectionmode: ‘none’, editmode: ‘selectedrow’, altRows: true, showToolbar: true, renderToolbar: function(toolBar) { var toTheme = function (className) { if (theme == “”) return className; return className + ” ” + className + “-” + theme; } // appends buttons to the status bar. var container = $(“<div style=’overflow: hidden; position: relative; height: 100%; width: 100%;’></div>”); var buttonTemplate = “<div style=’float: left; padding: 3px; margin: 2px;’><div style=’margin: 4px; width: 16px; height: 16px;’></div></div>”; var addButton = $(buttonTemplate); container.append(addButton); toolBar.append(container); addButton.jqxButton({cursor: “pointer”, enableDefault: false, height: 25, width: 25 }); addButton.find(‘div:first’).addClass(toTheme(‘jqx-icon-plus’)); addButton.jqxTooltip({ position: ‘bottom’, content: “Add”}); addButton.click(function (event) { if (!addButton.jqxButton(‘disabled’)) { that.editrow = 0; // add new empty row. $(“#jqxgrid”).jqxGrid(‘addRow’, null, {}, ‘first’); // select the first row and clear the selection. $(“#jqxgrid”).jqxGrid(‘clearSelection’); $(“#jqxgrid”).jqxGrid(‘selectRow’, 0); // edit the new row. $(“#jqxgrid”).jqxGrid(‘beginRowEdit’, 0); updateButtons(‘add’); } }); }, pagerButtonsCount: 8, columns: [ { text: 'Department Id', columntype: 'textbox', editable:false, datafield: 'departmentId', width: "20%" }, { text: 'Department Name', datafield: 'departmentName', columntype: 'textbox', width: "20%" }, { text: 'Status', datafield: 'status', columntype: 'checkbox', width: "20%" }, { text: 'Edit', align: "center", editable: false, sortable: false, datafield: '', cellsrenderer: function (row, column, value) { var eventName = "onclick"; if (row === that.editrow) { //return "<div style='text-align: center; width: 100%; top: 7px; position: relative;'>Update<span style=''>/</span>" + "Cancel</div>"; return "<button " + eventName + "='Update(" + row + ", event)' style='color: inherit; margin-left: 40%; left: -15px; top: 7px; position: relative;' data-row='" + row + "'>Update</button><button " + eventName + "='Cancel(" + row + ", event)' style='margin-left: 5px; left: -15px; top: 7px; position: relative;' data-row='" + row + "'>Cancel</button>"; } //return "Edit"; return "<button "+ eventName + "='Edit(" + row + ", event)' style='color: inherit; margin-left: 50%; left: -15px; top: 7px; position: relative;' data-row='" + row + "' class='editButtons'>Edit</button>"; } } ] }); }); </script> <script type=”text/javascript”> function Edit(row, event) { that.editrow = row; $(“#jqxgrid”).jqxGrid(‘beginrowedit’, row); if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } function Update(row, event) { that.editrow = -1; $(“#jqxgrid”).jqxGrid(‘endrowedit’, row); if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } function Cancel(row, event) { that.editrow = -1; $(“#jqxgrid”).jqxGrid(‘endrowedit’, row, true); var value = $(“#jqxgrid”).jqxGrid(‘getCellValue’, row, ‘departmentId’); if(value==null){ $(“#jqxgrid”).jqxGrid(‘deleteRow’, row); } if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; } </script> </head> <body class=’default’> <div id=”jqxgrid”></div> </body> </html>
Hi Chaitanya,
The issue occurs because you pass the row’s index to the method deleterow, but it requires the row’s id. Here is how you should modify your Cancel function:
function Cancel(row, event) { that.editrow = -1; $("#jqxgrid").jqxGrid('endrowedit', row, true); var value = $("#jqxgrid").jqxGrid('getcellvalue', row, 'departmentId'); if (value == null) { var id = $('#jqxgrid').jqxGrid('getrowid', row); $("#jqxgrid").jqxGrid('deleterow', id); } if (event) { if (event.preventDefault) { event.preventDefault(); } } return false; }
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hi Dimitar,
Thank you very much. Finally i got grid structure which i was looking.
But still auto focus on first cell is not resolved. and
On cancel and edit click, updaterow function is called. On edit i have to make ajax call. On cancel i have to reset row details. but how i will know cancel button/ edit button press in updaterow function.Hi Chaitanya,
As I stated earlier, when a full row edit is invoked programmatically (as you do), you cannot select which cell to be initially focused, i.e. you would have to click on a cell to begin its edit with the keyboard.
You can track which button has been pressed with a flag variable, e.g. when you click “Edit”, set the flag to 1, when you click “Cancel”, set it to 0. In updaterow check the value of the flag and execute your logic accordingly.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hi Dimitar,
Thanks for ur support.
Still, i have facing some minor issue in grid.
–> Tab button is not working to navigate from one column to another.
–> Checkbox issue in editor mode.
–> Click on the grid if grid is in edit mode, row become non editable but button cancel and update visible.
–> is it possible that when row become editable, disable filter?? $(‘#jqxGrid’).jqxGrid({ filterable: true}); make visible true and false. i want disbale means it should be visible but filtering off.Please help.
Please check jsfiddle link for grid Jsfiddle link
Hi Chaitanya,
Except for the “Tab” key functionality (which is not supported), I have implemented the other three in your example: http://jsfiddle.net/Dimitar_jQWidgets/x9ggd76j/. Please take a careful look at the changes I have made.
Best Regards,
DimitarjQWidgets team
http://www.jqwidgets.com/Hi,
If i update value in similar way as as shown above and when i click on update button,i am sending values to database and if again click on edit option,getting error as (cant read property value of null)in (‘beginrowedit;,row,value) method.please provide me the solution -
AuthorPosts
You must be logged in to reply to this topic.