Я добавил кнопку в диалоговом окне поиска jqgrid для сохранения критериев поиска в базе данных и использования в дальнейшем.
При нажатии на эту кнопку мне нужно свойство фильтров jqgrid критериев поиска.
http://i.stack.imgur.com/31J5x.png
[Снимок]
когда пользователь нажимает кнопку «Сохранить» (пользовательская кнопка добавлена мной в диалоговом окне поиска), я просил имя фильтра, используя диалоговое окно, а затем сохранял его вместе с фильтром.
когда нажата кнопка поиска, я не хочу перезагружать сетку по критериям поиска.
но я не могу получить свойство фильтра для хранения в базе данных.
Я использовал событие afterRedraw, но это не последний фильтр, который я добавил.
поэтому, пожалуйста, ответьте мне в ближайшее время.
Заранее спасибо.
var grid = jQuery("#list_records").jqGrid({
url: "getGridData.php?" + window.location.search.substring(1),
searchurl: "getGridData.php?" + window.location.search.substring(1),
datatype: 'json',
mtype: "GET",
colNames: ["Task Id", "Title", "Priority", "tags", "Created Date", "Last Update Date", "Complete Date"],
colModel: [
{ name: 'Task_ID', index: 'Task_ID', width: 200},
{ name: 'Title', index: 'Title', width: 200 },
{ name: 'Priority', index: 'Priority', width: 200},
{ name : 'tags', index : 'tags', width : 200},
{ name : 'Created_Date', index : 'Created_Date', width : 200},
{ name : 'Last_Updated', index : 'Last_Updated', width : 200},
{ name : 'Completed_date', index : 'Completed_date', width : 200}
],
sortname: 'Task_ID',
viewrecords: true,
rownumbers: true,
sortorder: "desc",
ignoreCase: true,
pager: '#perpage',
caption: "Task Results",
rowNum: 30,
ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
});
grid.jqGrid('navGrid','#perpage', {add:false,edit:false,del:false,search:false,refresh:false}).jqGrid('navButtonAdd','#perpage',{
caption: "",
title : "Search",
id : "filterManipulation",
buttonicon:"ui-icon-search",
onClickButton: function (){
//console.log(JSON.stringify(filterForSearch));
$("#list_records").setGridParam({
postData: { filters: JSON.stringify(filterForSearch)}
});
$("#list_records").jqGrid('searchGrid',
{multipleSearch:true, overlay:false, searchOnEnter:true, multipleGroup:true, closeOnEscape:true, showQuery:true,recreateFilter: true,
afterShowSearch : function(){
var element = document.getElementById("fbox_list_records_2").getElementsByTagName("tr")[1].getElementsByTagName("td")[1];
var saveAnchor = document.createElement('a');
saveAnchor.setAttribute('id', 'fbox_list_save_query');
saveAnchor.setAttribute('class', 'fm-button ui-state-default ui-corner-all fm-button-icon-left');
saveAnchor.setAttribute('onclick','saveSearch()');
saveAnchor.innerHTML = buttonName;
var newAnchor = document.createElement('a');
newAnchor.setAttribute('id', 'fbox_list_new_filter');
newAnchor.setAttribute('class', 'fm-button ui-state-default ui-corner-all fm-button-icon-left');
newAnchor.setAttribute('onclick','newFilter()');
newAnchor.innerHTML = 'New';
element.appendChild(newAnchor);
element.appendChild(saveAnchor);
var tableDataTag = document.createElement("td");
tableDataTag.setAttribute('id','tdForFilterNameList');
var filterNameList = document.createElement("select");
filterNameList.setAttribute('id','filterNameList');
filterNameList.setAttribute('onChange','loadFilterAttribute()');
var option = new Option("--Select--", "0");
filterNameList.appendChild(option);
<?php
$userId = 0;
$conn = new mysqli("localhost", "root", "$$$$", "$$$");
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "select filter_id,filter_name from filters where userID = $userId ";
//print $sql;
$result = $conn->query($sql);
if($result)
{
while ($row = $result->fetch_assoc()) {
?>
var optionTag = document.createElement("option");
optionTag.setAttribute("value", "<?php echo $row['filter_id']?>");
var text = document.createTextNode("<?php echo $row['filter_name']?>");
optionTag.appendChild(text);
if(selectedValue == "<?php echo $row['filter_id']?>"){
optionTag.setAttribute("Selected", "true");
}
//option = new Option('<?php echo $row['filter_name']?>', '<?php echo $row['filter_id']?>');
filterNameList.appendChild(optionTag);
<?php
}
}
?>
tableDataTag.appendChild(filterNameList);
var elementForDropDown = document.getElementById("fbox_list_records").getElementsByTagName("table")[0].getElementsByTagName("tr")[0];
elementForDropDown.appendChild(tableDataTag);
},
onSearch: function() {
var postData = grid.jqGrid('getGridParam','postData');
var $filter = $("#" + $.jgrid.jqID("fbox_" + this.id)),
sql = $filter.jqFilter('toSQLString');
$("#list_records").setGridParam({url: "getGridData.php?" + window.location.search.substring(1) + "&sqlQuery=" + escape(sql)});
$("#list_records").trigger("reloadGrid");
loadgridData(postData, sql);
fusionChart(postData, sql);
return false;
},
onReset : function() {
var postData = grid.jqGrid('getGridParam','postData');
$("#list_records").setGridParam({url: "getGridData.php?" + window.location.search.substring(1)});
$("#list_records").trigger("reloadGrid");
loadgridData(postData, '');
fusionChart(postData, '');
return false;
},
onClose: function(){
filterForSearch = "";
buttonName = "Save";
selectedValue = "";
},
afterRedraw: function (p) {
console.log(p.filter);
}
});
},
position:"last"});
В приведенном выше коде я добавил пользовательскую кнопку навигации.
Этот код предназначен для загрузки поискового фильтра пользователя.
способ хранения и редактирования фильтра.
Но что я должен сделать, чтобы получить фильтр, где нажмите кнопку Сохранить.
спасибо @jtc за просмотр моего вопроса.
Ответ на мой вопрос уже в моем вопросе.
В основном я реализовал функциональность Сохранить, Обновить, Удалить в диалоге предварительного поиска.
В поисковом диалоге у меня был список всех фильтров конкретного пользователя.
Пользователь может создать новый фильтр, а также обновить и удалить фильтр, выбрав его.
Поэтому позже, когда пользователь снова вошел в систему, он / она сделал все манипуляции с фильтрами и выбрал определенное поле из списка фильтров и соответственно выполнил поиск.
Так что, если кому-то понадобится код, дайте мне знать об этой функциональности.
Спасибо
Других решений пока нет …