Кто-нибудь знает, как сортировать данные из запроса ColdFusion, чтобы он мог использоваться jsGrid?ColdFusion, jsGrid, oData
В настоящее время я использую serializeJSON() для преобразования результата запроса в json, а затем попробую подать его в jsGrid. Примером используемого jsGrid является пример oData на этой странице: http://js-grid.com/demos/
Проблема в том, что пакет json, созданный serializeJSON(), не является той же «формой», что и требуемый пакет OData по демо.
Итак, вопрос в том, как я могу сортировать свои данные из ColdFusion в формате oData?
Update: В ответ на некоторые вопросы, это то, что serializeJSON() производит:
{
"COLUMNS": [
"ROLE_KY",
"ROLE_NAME",
"ROLE_TEXT",
"ROLE_RANKING",
"ROLE_STATUS",
"ROLE_DATE_CREATED",
"ROLE_DATE_AMENDED"
],
"DATA": [
[
1,
"Developer",
"Like Admin. Plus access to diagnostic info hidden to other users",
1,
1,
"November, 29 2016 20:35:48",
null
],
[
2,
"Admin",
"Like Contributor, but can also edit users, ie. full access",
2,
1,
"November, 29 2016 20:35:48",
null
],
[
3,
"Contributor",
"Like Privieged, but can also edit data, but not users",
3,
1,
"January, 20 2017 14:51:39",
null
],
[
4,
"Privileged",
"Like Basic, but can also read restricted data",
4,
1,
"November, 29 2016 20:35:48",
null
],
[
5,
"Basic",
"Basic users can use the search facilities and read non-restricted data only",
5,
1,
"November, 29 2016 20:35:48",
null
]
]
}
И ниже, что демонстрационная страница jsGrid/OData производит. В serializeJSON() есть несколько нестандартных параметров, которые создают пакет в разных форматах (строка, столбец, структура), но ни один из них не соответствует желаемому jsGrid. OData.
{
"odata.metadata": "http://services.odata.org/V3/(S(3mnweai3qldmghnzfshavfok))/OData/OData.svc/$metadata#Products",
"value": [
{
"ID": 0,
"Name": "Bread",
"Description": "Whole grain bread",
"ReleaseDate": "1992-01-01T00:00:00",
"DiscontinuedDate": null,
"Rating": 4,
"Price": 2.5
},
{
"ID": 1,
"Name": "Milk",
"Description": "Low fat milk",
"ReleaseDate": "1995-10-01T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 3.5
},
{
"ID": 2,
"Name": "Vint soda",
"Description": "Americana Variety - Mix of 6 flavors",
"ReleaseDate": "2000-10-01T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 20.9
},
{
"ID": 3,
"Name": "Havina Cola",
"Description": "The Original Key Lime Cola",
"ReleaseDate": "2005-10-01T00:00:00",
"DiscontinuedDate": "2006-10-01T00:00:00",
"Rating": 3,
"Price": 19.9
},
{
"ID": 4,
"Name": "Fruit Punch",
"Description": "Mango flavor, 8.3 Ounce Cans (Pack of 24)",
"ReleaseDate": "2003-01-05T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 22.99
},
{
"ID": 5,
"Name": "Cranberry Juice",
"Description": "16-Ounce Plastic Bottles (Pack of 12)",
"ReleaseDate": "2006-08-04T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 22.8
},
{
"ID": 6,
"Name": "Pink Lemonade",
"Description": "36 Ounce Cans (Pack of 3)",
"ReleaseDate": "2006-11-05T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 18.8
},
{
"ID": 7,
"Name": "DVD Player",
"Description": "1080P Upconversion DVD Player",
"ReleaseDate": "2006-11-15T00:00:00",
"DiscontinuedDate": null,
"Rating": 5,
"Price": 35.88
},
{
"ID": 8,
"Name": "LCD HDTV",
"Description": "42 inch 1080p LCD with Built-in Blu-ray Disc Player",
"ReleaseDate": "2008-05-08T00:00:00",
"DiscontinuedDate": null,
"Rating": 3,
"Price": 1088.8
},
{
"odata.type": "ODataDemo.FeaturedProduct",
"ID": 9,
"Name": "Lemonade",
"Description": "Classic, refreshing lemonade (Single bottle)",
"ReleaseDate": "1970-01-01T00:00:00",
"DiscontinuedDate": null,
"Rating": 7,
"Price": 1.01
},
{
"odata.type": "ODataDemo.FeaturedProduct",
"ID": 10,
"Name": "Coffee",
"Description": "Bulk size can of instant coffee",
"ReleaseDate": "1982-12-31T00:00:00",
"DiscontinuedDate": null,
"Rating": 1,
"Price": 6.99
}
]
}
В конкретном ответе на вопрос Leigh, я попытался преобразования запроса в массив структур, а затем serialising его. Это дало мне это, что опять-таки неправильная «форма».
[
{
"ROLE_KY": 1,
"ROLE_DATE_AMENDED": "",
"ROLE_NAME": "Developer",
"ROLE_TEXT": "Like Admin. Plus access to diagnostic info hidden to other users",
"ROLE_DATE_CREATED": "November, 29 2016 20:35:48",
"ROLE_STATUS": 1,
"ROLE_RANKING": 1
},
{
"ROLE_KY": 2,
"ROLE_DATE_AMENDED": "",
"ROLE_NAME": "Admin",
"ROLE_TEXT": "Like Contributor, but can also edit users, ie. full access",
"ROLE_DATE_CREATED": "November, 29 2016 20:35:48",
"ROLE_STATUS": 1,
"ROLE_RANKING": 2
},
{
"ROLE_KY": 3,
"ROLE_DATE_AMENDED": "",
"ROLE_NAME": "Contributor",
"ROLE_TEXT": "Like Privieged, but can also edit data, but not users",
"ROLE_DATE_CREATED": "January, 20 2017 14:51:39",
"ROLE_STATUS": 1,
"ROLE_RANKING": 3
},
{
"ROLE_KY": 4,
"ROLE_DATE_AMENDED": "",
"ROLE_NAME": "Privileged",
"ROLE_TEXT": "Like Basic, but can also read restricted data",
"ROLE_DATE_CREATED": "November, 29 2016 20:35:48",
"ROLE_STATUS": 1,
"ROLE_RANKING": 4
},
{
"ROLE_KY": 5,
"ROLE_DATE_AMENDED": "",
"ROLE_NAME": "Basic",
"ROLE_TEXT": "Basic users can use the search facilities and read non-restricted data only",
"ROLE_DATE_CREATED": "November, 29 2016 20:35:48",
"ROLE_STATUS": 1,
"ROLE_RANKING": 5
}
]
В ответ на Jules, jsGrid мой друг, не cfgrid :-)
Если это действительно JSON, то он должен работать, я полагаю. Можете ли вы показать нам пример JSON, который вы генерируете? –
Попробуйте «console.log» результат, поступающий из backend в 'controller.loadData', чтобы быть уверенным в правильном формате результата. – tabalin
Как сказал Мигель-Ф, нам нужно увидеть пример генерируемой строки JSON. Я предполагаю, что вы можете использовать 'serializeJSON (queryObject)', который по умолчанию имеет очень неуклюжий формат. Обычно создавать свои собственные. Например, [построить массив структур] (http://stackoverflow.com/a/3350341/104223), затем сериализуем и возвращаем массив. – Leigh