i STARTER jqGrid, je veux mettre en œuvre modifier en ligne dans jqGrid j'ai cette grilleComment mettre en œuvre modifier en ligne dans jqGrid
$(function() {
var grid = $('#list');
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'ClearanceCost', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
datatype: 'json',
height: 490,
colNames: ['REQUEST_ID','WAYBILL_NO', 'COST_ID', 'COST_NAME','COST_AMOUNT', 'CURRENCY_ID ', 'CURRENCY_NAME','REMARK'],
colModel: [
{ name: 'REQUEST_ID', width: 100, sortable: true,hidden:true },
{ name: 'WAYBILL_NO', width: 100, sortable: true, hidden: true },
{ name: 'COST_ID', width: 200, sortable: true, hidden: true },
{ name: 'COST_NAME', width: 200, sortable: true },
{ name: 'COST_AMOUNT', width: 100, sortable: true },
{ name: 'CURRENCY_ID', width: 100, sortable: true, hidden: true },
{ name: 'CURRENCY_NAME', width: 200, sortable: true },
{ name: 'REMARK', width: 200, sortable: true }
],
gridview: true,
rowNum: 20,
rowList: [20, 40, 60],
pager: '#pager',
sortname: 'REQUEST_ID',
viewrecords: true,
sortorder: 'ASC',
rownumbers: true,
editurl: 'jQGridHandler.ashx',
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#list').jqGrid('restoreRow', lastsel);
jQuery('#list').jqGrid('editRow', id, true);
lastsel = id;
}
}
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true }, {}, {}, {},
{ multipleSearch: true, overlay: false, width: 460 });
i d'abord remplir tous costType dans jqGrid et je veux l'utilisateur Entrez Montant en cellule et sélectionnez l'unité monétaire dans la cellule currency_unit, dans cette grille lorsque l'utilisateur clique sur la ligne, cette ligne change de façon modifiable, mais je veux quand la page est chargée, toute la ligne est modifiable. merci à tous.
i Changer le code Mais je ne peux pas obtenir la ligne de données pour la base de données de sauvegarde dans j'écris ce code
$(function() {
var lastSel;
var grid = $('#list');
calculateTotal = function() {
var totalAmount = grid.jqGrid('getCol', 'COST_AMOUNT', false, 'd');
var totalTax = grid.jqGrid('getCol', 'COST_NAME', false, 'd');
alert(totalAmount.length);
for (var i = 0; i <= totalAmount.length - 1; i++) {
alert(totalTax[i] + "=" + totalAmount[i]);
}
};
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'ClearanceCost', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
direction: "rtl",
datatype: 'json',
height: 490,
colNames: ['REQUEST_ID','WAYBILL_NO', 'COST_ID', 'COST_NAME','COST_AMOUNT', 'CURRENCY_ID ', 'CURRENCY_NAME','REMARK'],
colModel: [
{ name: 'REQUEST_ID', width: 100, sortable: true, hidden: true },
{ name: 'WAYBILL_NO', width: 100, sortable: true, hidden: true },
{ name: 'COST_ID', width: 200, sortable: true, hidden: true },
{ name: 'COST_NAME', width: 200, sortable: true },
{ name: 'COST_AMOUNT', width: 100, sortable: true, editable: true },
{ name: 'CURRENCY_ID', width: 100, sortable: true, hidden: true },
{ name: 'CURRENCY_NAME', width: 200, sortable: true, editable: true },
{ name: 'REMARK', width: 200, sortable: true, editable: true }
],
gridview: true,
rowNum: 30,
rowList: [30, 60, 90],
pager: '#pager',
sortname: 'REQUEST_ID',
viewrecords: true,
sortorder: 'ASC',
caption: 'درخواست ها......',
rownumbers: true,
loadComplete: function() {
var $this = $(this), rows = this.rows, l = rows.length, i, row;
for (i = 0; i < l; i++) {
row = rows[i];
if ($.inArray('jqgrow', row.className.split(' ')) >= 0) {
$this.jqGrid('editRow', row.id, true);
}
}
}
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true }, {}, {}, {},
{ multipleSearch: true, overlay: false, width: 460 });
$("#btnsave").click(function() {
calculateTotal();
});
});
mais ce code, pas de travail m oleg merci de me aide.
EDIT02: Je crée cette
avec ce code. je veux lorsque l'utilisateur cliquez sur le bouton enregistrer toutes les données toutes les ligne envoyer au serveur, mais fonctionne pas
$(document).ready(function() {
var mydata = [
{ COST_NAME: "A", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "b", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "c", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "d", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "e", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "f", COST_AMOUNT: "", CURRENCY_NAME: "" },
{ COST_NAME: "g", COST_AMOUNT: "", CURRENCY_NAME: "" }
];
var lastSel;
var grid = $('#list');
calculateTotal = function() {
var totalAmount = grid.jqGrid('getCol', 'COST_AMOUNT', false, 'd');
var totalTax = grid.jqGrid('getCol', 'COST_NAME', false, 'd');
alert(totalAmount.length);
for (var i = 0; i <= totalAmount.length - 1; i++) {
alert(totalTax[i] + "=" + totalAmount[i]);
}
};
grid.jqGrid({
postData: { ActionPage: 'ClearanceCost', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
datatype: "local",
data: mydata,
mtype: 'POST',
height: 'auto',
colNames: [ 'COST_NAME', 'COST_AMOUNT', 'CURRENCY_NAME'],
colModel: [
{ name: 'COST_NAME', width: 200, sortable: true },
{ name: 'COST_AMOUNT', width: 100, sortable: true, editable: true },
{ name: 'CURRENCY_NAME', width: 200, sortable: true, editable: true }
],
gridview: true,
rowNum: 30,
rowList: [30, 60, 90],
pager: '#pager',
viewrecords: true,
sortorder: 'ASC',
rownumbers: true,
loadComplete: function() {
var $this = $(this), rows = this.rows, l = rows.length, i, row;
for (i = 0; i < l; i++) {
row = rows[i];
if ($.inArray('jqgrow', row.className.split(' ')) >= 0) {
$this.jqGrid('editRow', row.id, true);
}
}
}
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true }, {}, {}, {},
{ multipleSearch: true, overlay: false, width: 460 });
$("#btnsave").click(function() {
calculateTotal();
});
});
et le corps
<table id="list"></table>
<input type="button" value="Save" id="btnsave"/>
remercie tous
NEW EDIT: i pour ce problème écrire ce code
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'ClearanceCost', Action: 'Fill' },
ajaxGridOptions: { cache: false },
loadonce: true,
direction: "rtl",
pgtext: "صفحه {0} از {1}",
datatype: 'json',
height: 490,
colNames: ['شماره درخواست', 'شماره بارنامه', 'شماره هزینه', 'نام هزینه', 'مبلغ', 'کد واحدهزینه ', 'توضیحات'],
colModel: [
{ name: 'REQUEST_ID', width: 100, sortable: true, hidden: true },
{ name: 'WAYBILL_NO', width: 100, sortable: true, hidden: true },
{ name: 'COST_ID', width: 200, sortable: true, hidden: true },
{ name: 'COST_NAME', width: 200, sortable: true },
{ name: 'COST_AMOUNT', width: 100, sortable: true, editable: true },
{ name: 'CURRENCY_ID', width: 100, sortable: true, editable: true, edittype: 'select', editoptions: {
url: "JQGridHandler.ashx?ActionPage=CurrencyUnit&Action=FillDrop",
dataInit: function (data) {
var response = jQuery.parseJSON(data.responseText);
var s = '<select>';
s += '<option value="0">انتخاب کنید</option>';
if (response && response.length) {
for (var i = 0, l = response.length; i < l; i++) {
var ri = response[i];
s += '<option value="' + ri.CURRENCY_ID + '">' + ri.CURRENCY_NAME + '</option>';
}
}
return s + "</select>";
}
}
},
{ name: 'REMARK', width: 200, sortable: true, editable: true }
],
gridview: true,
rowNum: 30,
rowList: [30, 60, 90],
pager: '#pager',
sortname: 'REQUEST_ID',
viewrecords: true,
sortorder: 'ASC',
caption: 'درخواست ها......',
rownumbers: true,
loadComplete: function() {
var strOption = "";
$.ajax({
url: 'JQGridHandler.ashx',
contentType: 'application/json; charset=utf-8',
data: { ActionPage: 'CurrencyUnit', Action: 'FillDrop' },
success: function (data) {
var rows = data.rows;
strOption = '<option value=0>انتخاب کنید</option>';
if (data.rows.length > 0) {
for (var i = 0, l = rows.length; i < l; i++) {
var ri = rows[i];
strOption += '<option value="' + ri.cell[0] + '">' + ri.cell[1] + '</option>';
}
}
},
dataType: 'json'
});
var $this = $(this);
rows = this.rows;
var l = rows.length, i, row;
for (i = 0; i < l; i++) {
row = rows[i];
// var $t = grid.jqGrid('getCell', row.id, 'CURRENCY_ID');
// var $id = $($t).attr("id");
// $("#" + $id).val(strOption);
// console.log(row.id);
var selRowId = grid.jqGrid('getGridParam', row.id);
console.log(selRowId);
console.log(grid.jqGrid('getCell', row.id, 'CURRENCY_ID'));
if ($.inArray('jqgrow', row.className.split(' ')) >= 0) {
$this.jqGrid('editRow', row.id, true);
}
}
},
editurl: "jQGridHandler.ashx"
});
grid.jqGrid('navGrid', '#pager', { add: true, edit: true, del: true }, {}, {}, {},
{ multipleSearch: true, overlay: false, width: 460 });
première question: ce code est vrai? et maintenant je ne peux pas remplir dropdownlist. s'il vous plaît aidez-moi mr.Oleg. merci
@ oleg: très merci, mais si je veux quand l'utilisateur prese flèche vers le bas dans le focus keyboad aller à la prochaine rangée, s'il vous plaît aidez-moi. Merci. – Pouya
@ oleg: je change de question, s'il vous plaît aidez-moi. merci – Pouya
@MohsenBahrzadeh: J'ai modifié ma réponse pour inclure la navigation clavier supplémentaire. Vous avez une dernière question avec un code modifié que je ne comprends pas. Vous utilisez 'editurl: 'jQGridHandler.ashx'' pour que les données soient automatiquement envoyées au serveur lors de la sauvegarde. Vous pouvez donc appeler 'saveRow' dans la même boucle que vous appelez' editRow'. Chaque appel enverra les données actuelles de la ligne au serveur. Votre code actuel qui utilise 'calculateTotal' n'est pas clair pour moi. – Oleg