Введенный в Python 3.4, pathlib
имеет действительно удобный метод для чтения текста из файлов, как показано ниже:
from pathlib import Path
p = Path('my_text_file')
lines = p.read_text().splitlines()
(вызов splitlines
- это то, что превращает это от строки, содержащей все содержимое файла, до списка строк в файле).
pathlib
имеет много удобных удобств. read_text
красиво и лаконично, и вам не нужно беспокоиться об открытии и закрытии файла. Если все, что вам нужно сделать с файлом, это прочитать все сразу, это хороший выбор.
Сложность состоит в том, чтобы получить сообщение, которое будет распределяться по столбцам. Я не думаю, что есть простой способ сделать это; вам нужно, скажем, скрыть все столбцы, кроме первого, установить ширину первого столбца, чтобы заполнить сетку, и поместить сообщение в первый столбец. Затем, когда вы перезагрузите, вам придется все это отменить. Это должно сработать, но это немного беспорядочно.
Однако, допустим, вы просто хотите поместить сообщение в первый столбец, а остальные оставить пустыми. По сути, вы реализуете функцию события loadComplete и управляете содержимым сетки.
Добавьте свойство к объекту сетки следующим образом:
//Various other grid properties...
loadComplete: function() {
if (jQuery("#grid_id").getGridParam("records")==0) {
jQuery("#grid_id").addRowData(
"blankRow", {"firstCol":"No data was found". "secondCol":"", "thirdCol":""
);
}
}
Где «#grid_id» - это идентификатор контейнера сетки, «blankRow» - это произвольный идентификатор, который вы дали новой строке, которую вы добавили, и "
Поместите ваше сообщение в div со стилем: hidden. Поместите это в свой div пейджера.
В событии loadComplete сделайте что-нибудь вроде:
if($('#results').getGridParam("records")==0) {
$("#noResultsDiv").show();
}
Я искал ответ на этот вопрос и пришел к следующему решению, но я не разговариваю с сервером, поэтому мне нужно использовать что-то помимо события loadComplete. Я подключился к событию gridComplete и проверял, есть ли какие-нибудь записи. Если нет, отобразите пустой текст или скройте его.
jQuery('#test').jqGrid({ ... // some settings gridComplete: loadCompleteFunction, emptyDataText:'There are no records. If you would like to add one, click the "Add New ..." button below.', // you can name this parameter whatever you want. ... // more settings }); function LoadComplete() { if ($('test').getGridParam('records') == 0) // are there any records? DisplayEmptyText(true); else DisplayEmptyText(false); } function DisplayEmptyText( display) { var grid = $('#test'); var emptyText = grid.getGridParam('emptyDataText'); // get the empty text var container = grid.parents('.ui-jqgrid-view'); // find the grid's container if (display) { container.find('.ui-jqgrid-hdiv, .ui-jqgrid-bdiv').hide(); // hide the column headers and the cells below container.find('.ui-jqgrid-titlebar').after('' + emptyText + ''); // insert the empty data text } else { container.find('.ui-jqgrid-hdiv, .ui-jqgrid-bdiv').show(); // show the column headers container.find('#EmptyData' + dataObject).remove(); // remove the empty data text } }