Вам необходимо внести 2 изменения в код, как показано ниже, и фильтры должны работать нормально:
df <- data.frame(ID=c(1,2,3,4,5,6),
Date=c("1900-01-12","2010-12-29","1934-03-17", "1989-09-19","1978-11-27","2010-01-13"),
stringsAsFactors = F) # Ensure your dates are initially strings and not factors
# Actually convert the character dates to Date before writing them to excel
df$Date <- as.Date(df$Date)
Вот простой пример ...
Вам понадобится https://github.com/douglascrockford/JSON-js/blob/master/json2.js чтобы это работало ...
и, конечно же, обычные файлы jquery.
Вставьте это в веб-службу
// The lower case properties here are required to be lower case
// I cant find a way to rename them when they are serialized to JSON
// XmlElement("yournamehere") does not work for JSON :(
public class JQGrid
{
public class Row
{
public int id { get; set; }
public List<string> cell { get; set; }
public Row()
{
cell = new List<string>();
}
}
public int page { get; set; }
public int total { get; set; }
public int records { get; set; }
public List<Row> rows { get; set; }
public JQGrid()
{
rows = new List<Row>();
}
}
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyWebService : System.Web.Services.WebService
{
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public JQGrid GetJQGrid(int page, int pageSize, string sortIndex, string sortDirection)
{
DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING, "udsp_GetMyData",pageIndex, pageSize);
if (ds == null || ds.Tables.Count < 1)
throw new Exception("Unable to retrieve data.");
JQGrid jqGrid = new JQGrid();
int i = 1;
foreach (DataRow dataRow in ds.Tables[0].Rows)
{
JQGrid.Row row = new JQGrid.Row();
row.id = Convert.ToInt32(dataRow["MyIdColumn"]);
row.cell.Add(dataRow["MyIdColumn"].ToString());
row.cell.Add(dataRow["MyColumn"].ToString());
projectGrid.rows.Add(row);
}
jqGrid.page = 1; // Set this when you are actually doing paging... this is just a sample
jqGrid.records = jqGrid.rows.Count;
jqGrid.total = jqGrid.rows.Count; // Set this to total pages in your result...
return jqGrid;
}
}
Вставьте это на свою страницу aspx
<script type="text/javascript">
function getData(pdata) {
var params = new Object();
params.page = pdata.page;
params.pageSize = pdata.rows;
params.sortIndex = pdata.sidx;
params.sortDirection = pdata.sord;
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/CLM/CLM.asmx/GetProjectGrid2",
data: JSON.stringify(params),
dataType: "json",
success: function(data, textStatus) {
if (textStatus == "success") {
var thegrid = $("#testGrid")[0];
thegrid.addJSONData(data.d);
}
},
error: function(data, textStatus) {
alert('An error has occured retrieving data!');
}
});
}
var gridimgpath = '/clm/css/ui-lightness/images';
$(document).ready(function() {
$("#testGrid").jqGrid({
datatype: function(pdata) {
getData(pdata);
},
colNames: ['My Id Column', 'My Column'],
colModel: [
{ name: 'MyIdColumn', index: 'MyIdColumn', width: 150 },
{ name: 'My Column', index: 'MyColumn', width: 250 }
],
rowNum: 10,
rowList: [10, 20, 30],
imgpath: gridimgpath,
pager: jQuery('#pagerdt'),
sortname: 'id',
viewrecords: false,
sortorder: "desc",
caption: "Projects",
cellEdit: false
});
});
</script>
Вы проверили, что tbl переменная получает ссылку на Ваш jqgrid экземпляр?
Попытайтесь добавить идентификатор к своему элементу таблицы и получите ссылку на jqgrid как:
var thegrid = jQuery("#mytableid")[0];
хорошо я вижу одну вещь неправильно здесь:
var tbl = jQuery('table.scroll')[0];
//tbl.addJSONData(objGridData); //error received: addJSONData not a function
если Вы действительно задаетесь вопросом, почему Вы получаете эту ошибку, это - потому что tbl не имеет той функции.
Править: я стал любопытным, и проверил, добавил ли jqGrid те методы к ссылочному объекту DOM. и они сделали. (я проверил поджигателя использования здесь: http://trirand.com/jqgrid/jqgrid.html).
Одна вещь, которая может происходить здесь, состоит в том, что у Вас есть несколько таблиц класса 'прокрутка', и Ваш jQuery возвращает неправильный.
Обычно, когда при использовании jqGrid вы получите ошибку «бла, это не функция», потому что не был загружен правильный модуль. Функция addJSONData определена в файле grid.base.js. Можете ли вы проверить свою функцию jqGridInclude () в файле jquery.jqGrid.js и убедиться, что grid.base.js включен как часть инициализации переменной модулей?
Поскольку у нас было много вопросов по ASP.NET WebForms и jqGrid, мы решили пойти по «компонентному» пути и реализовать что-то очень похожее на asp: GridView. Таким образом, вы можете управлять jqGrid, используя знакомый жизненный цикл страницы ASP.NET, события, источники данных и т. Д.
Вы можете увидеть бета-версию этого в Интернете здесь - в настоящее время доступно более 30 примеров:
http: // www .trirand.net / demo. aspx
Скорее всего, он вырастет и в коммерческий продукт (будут доступны лицензии с открытым исходным кодом), если в этом есть интерес. Между тем, вы можете использовать Reflector для проверки источников для справки (пока мы не найдем способ сделать источник доступным в Интернете). Мы используем SVN для ASP.NET, а не gitHub для ядра js, поэтому у нас есть работа в этом направлении.
Мы надеемся, что это поможет сообществу.
Румен Станков Триранд
Может быть, некоторая помощь в этом коде здесь размещена на переполнении стека? jqgrid с веб-методом asp.net и json, работающим с сортировкой, разбиением по страницам, поиском и LINQ - но требуются динамические операторы
Это очень старый вопрос, однако совсем недавно у меня была такая же проблема. Я написал, как я этого добился, в новом блоге, который я пытаюсь начать.
Возможно, есть более чистые способы сделать это, но этот сработал для меня. Пока что мне удалось довольно легко расширить масштабы на основе этого примера. Мое следующее препятствие - заставить работать loadonce.
Вы можете найти мой пример здесь: