我可以'我找不到一种将数据库源添加到dgrid的优雅方法
I can't find an elegant way to add a Database Source to a dgrid
现在我有
require([
"dojo/on", "dgrid/OnDemandGrid","dgrid/Tree","dgrid/Editor", "dgrid/Keyboard", "dojo/_base/declare",
"dgrid/data/createHierarchicalStore", "data/projects_data",
"dojo/domReady!"
], function(
on, Grid, Tree, Editor, Keyboard, declare, createHierarchicalStore, hierarchicalCountryData
){
var count = 0; // for incrementing edits from button under 1st grid
function nbspFormatter(value){
// returns " " for blank content, to prevent cell collapsing
return value === undefined || value === "" ? " " : value;
}
var StandardGrid = declare([Grid, Keyboard, Editor, Tree]);
window.grid = new StandardGrid({
collection: createHierarchicalStore({ data: hierarchicalCountryData }, true),
columns: [
{renderExpando: true, label: "Name", field:"variant_name", sortable: false, editor: "text", editOn: "dblclick"},
{label: "Visited", field: "bool", sortable: false, editor: "checkbox"},
{label:"Project", field:"project", sortable: false, editor: "text", editOn: "dblclick"},
{label:"locked", field:"locked", editor: "text", editOn: "dblclick"},
{label:"modified", field:"modified", editor: "text", editOn: "dblclick"},
{label:"summary", field:"summary", editor: "text", editOn: "dblclick"}
]
}, "treeGrid2");
grid.on("dgrid-datachange", function(evt){
console.log("data changed: ", evt.oldValue, " -> ", evt.value);
console.log("cell: ", evt.cell.row.id, evt.cell.column.field);
});
grid.on("dgrid-editor-show", function(evt){
console.log("show editOn editor: ", evt);
});
grid.on("dgrid-editor-hide", function(evt){
console.log("hide editOn editor: ", evt);
});
});
data/projects是一个包含数据的js文件。但是现在如何将这个dGrid连接到MySQL数据库呢?在文档中找不到任何好的信息。我认为JSON rest可能有问题,但对此不确定。
添加:我可以在HTML表中显示数据库。是否有合适的可能性从HTML表中填充dGrid?
我还是错过了一些东西。具有来自的连接数据库->PHP但无法在适当的JS中获得结果以加载到dStore中。
最简单的方法是用您选择的服务器端语言(在这种情况下听起来像PHP)编写一个服务,该服务基于MySQL数据库中的数据生成JSON输出。根据数据的潜在大小,您可以将数据设计为使用dstore中的两个现成存储之一:Request
(如果还涉及写操作,则为Rest
)或RequestMemory
。
两者中比较简单的是RequestMemory
,它简单地将Memory
存储的功能与前端服务器请求(通过Request
)相结合。这个存储将期望服务以一个完整的数据负载来响应:一个对象数组,其中每个对象都是数据库中的一条记录。类似这样的东西:
[
{
"id": 1,
"foo": "bar"
},
{
"id": 2,
"foo": "baz"
}
]
Rest
存储需要相同格式的数据,但也需要服务处理筛选、排序和范围。过滤和排序是通过查询字符串参数表示的(例如,在最简单的情况下,foo=bar&baz=bim
用于过滤,sort(+foo)
或sort(-foo)
用于排序),而范围通常通过HTTP范围标头表示(例如,前10项的Range: Items 0-9
)。
为Rest
存储实现服务显然需要更多的工作,但如果您希望您的数据源可能具有数千个项目,则更可取,因为RequestMemory
将别无选择,只能提前请求所有项目。
使用这两个存储中的任何一个,一旦您有了一个适当输出JSON的服务,您就可以创建一个target
指向服务端点的存储实例,然后通过collection
属性将其传递到网格。
如果您的数据旨在表示层次结构,那么仍然可以将dstore/Tree
混合到dstore/RequestMemory
或dstore/Request
中,前提是您的层次结构是通过父ID引用表示的。默认情况下,Tree
通过每个项目上的parent
属性筛选子项,并通过检查每个项目的hasChildren
属性报告mayHaveChildren
结果。
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 使用javascript从数据库中添加表
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- 如何使用PHP将javascript变量添加到mysql数据库中
- 当我在重新启动cordova应用程序后尝试添加更多数据时,lokijs会丢失数据库和收集中的数据
- 在javascript中跳过周六和周日,并向mysql数据库中添加不重复的条目
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 将数据库中的超链接添加到查询结果
- 将行从数据库添加到表视图
- indexedDB创建数据库并添加内容执行失败'交易'在'IDBDatabase'
- 使用Ajax和JQuery从SQL数据库中添加和删除一行
- 如何将任意数量的图像动态添加到源字符串位于数据库中的 Web 窗体
- 单击按钮将值添加到数据库
- 预先构建的GUI,用于上传.csv并将数据添加到mysql数据库
- 如何将动态添加的文本框插入MySQL数据库
- 如何将数据库系统添加到WebGL应用程序中
- 无法使用asp.net mvc将数据添加到数据库中
- 为什么不刷新就提交表单而不添加数据库值
- 当使用 JavaScript 动态添加数据库时,如何使用 PHP 向数据库添加信息
- 在 for 循环中添加数据库检索到的数据