Zastanawiam się, jak mogę wyzwolić reloadGrid po inline edycji wiersza.jqgrid przeładowanie siatki po pomyślnej aktualizacji inline/inline tworzenie rekordu
<script type="text/javascript">
jQuery(document).ready(function(){
var lastcell;
jQuery("#grid").jqGrid({
url:'{{ json_data_handler }}?year={{ get_param_year }}&month={{ get_param_month }}&project_id={{ get_param_project_id }}',
datatype: "json",
mtype: 'GET',
colNames:['hour_record_pk', 'project_pk', 'weekday', 'date', 'sum', 'description'],
colModel:[
{name:'hour_record_pk',index:'hour_record_pk', width:55, sortable:false, editable:true, editoptions:{readonly:true,size:10}},
{name:'project_pk',index:'project_pk', width:55, sortable:false, editable:true, editoptions:{readonly:true,size:10}},
{name:'weekday',index:'weekday', width:300, editable:false, sortable:false},
{name:'date_str',index:'date_str', width:300, editable:true, sortable:false, editoptions:{readonly:true}},
{name:'sum',index:'sum', width:100, editable:true, sortable:true,editrules:{number:true,minValue:0,maxValue:24,required:true}},
{name:'description',index:'description', width:600, editable:true, sortable:false,},
],
jsonReader : {
repeatitems:false
},
rowNum:31,
rowList:[10,20,31],
//pager: jQuery('#gridpager'),
sortname: 'id',
viewrecords: true,
sortorder: "asc",
width: 800,
height: 750,
caption:"Hour Record Overview",
reloadAfterEdit: true, //seems to have no effect
reloadAfterSubmit: true, //seems to have no effect
onSelectRow: function(id){
if(id && id!==lastcell){
jQuery('#grid').jqGrid('restoreRow',lastcell);
jQuery('#grid').jqGrid('editRow',id,true);
lastcell=id;
}
},
editurl:"{% url set_hour_record_json_set %}"
}).navGrid('#gridpager');
});
function reload(result) {
$("#grid").trigger("reloadGrid");
}
stworzyłem już metodę reload, ale nie jestem pewien gdzie umieścić go próbowałem.
jQuery('#grid').jqGrid('editRow',id,true,reload());
ale to już jest wywoływana, gdy użytkownik kliknie na rząd. Powyższy kod umożliwia użytkownikowi kliknięcie w wiersz i naciśnięcie klawisza enter powoduje przesłanie danych i aktualizację lub utworzenie rekordu.
Po utworzeniu przez użytkownika nowego obiektu muszę przeładować siatkę, ponieważ potrzebuję identyfikatora obiektu nowo utworzonego obiektu, aby zająć się dalszą edycją tego wiersza.
Edit: Rozwiązanie:
onSelectRow: function(row_id){
if(row_id != null) {
if(row_id !== last_selected_row) {
jQuery('#grid').jqGrid('restoreRow',last_selected_row);
jQuery('#grid').jqGrid('saveRow',row_id)
.editRow(row_id, true,false,reload);
last_selected_row = row_id;
} else {
last_selected_row=row_id;
}
}
},
Aktualizacja: Do wykorzystania w przyszłości. Wszyscy użytkownicy zaczynający od siatek js mogą również przejrzeć Slickgrid po przełączeniu z jqgrid na slickgrid i mogę go tylko polecić.
Twoja ostatnia edycja: rozwiązanie bardzo mi pomogło. Dzięki za uwzględnienie. – Tareq
Nie mogę zrobić powyższego kodu do pracy, to daje mi TypeError: jQuery ("# tnc-list"). JqGrid ("saveRow", row_id) .editRow nie jest funkcją – Marvzz
Nie działa dla mnie, przewiń w dół działa kod – ymakux