首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将按钮或图像添加到dojo网格

问如何将按钮或图像添加到dojo网格
EN

Stack Overflow用户
提问于 2012-07-01 14:55:57
回答 4查看 8.7K关注 0票数 1

我有一个带有json数据存储的dojo网格(mysql结果集转换为json格式)。当前我的网格显示5列,如下图所示:

​

我有一个名为“Action”的栏目。此“操作”列下的行应包含带超链接的按钮或图像(编辑图标、删除图标),例如用于编辑的edit.php?id=1或用于删除的delete.php?id=1。下面是我的dojo网格代码:

代码语言:javascript
复制
<span dojoType="dojo.data.ItemFileReadStore" data-dojo-id="studentsStore" url="http://localhost/newsmis/public/studentManagement/student/fetchdata/data/1"></span>
<table dojoType="dojox.grid.DataGrid" id="studentsGrid" data-dojo-id="studentsGrid" columnReordering="true" sortFields="['idstudents','first_name','middle_name','last_name']" store="studentsStore"  clientSort="true" selectionMode="single" rowHeight="25" noDataMessage="<span class='dojoxGridNoData'>No students found</span>">
    <thead>
        <tr>
            <th field="idstudents" width="20%">Student ID</th>
            <th field="first_name" width="20%">First Name</th>
            <th field="middle_name" width="20%">Middle Name</th>
            <th field="last_name" width="20%">Last Name</th>
            <th field="action" width="20%">Action</th>
        </tr>
    </thead>
</table>

我的json数据格式是

代码语言:javascript
复制
 {"identifier":"idstudents","items":[{"idstudents":"11","first_name":"Pradip","middle_name":"Maan","last_name":"Chitrakar"}]}

我该怎么做呢?请给我一些建议

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-01 23:56:21

我所知道的一种方法是,在网格结构中定义该列的格式化方法。因此,不是以声明的方式定义网格的结构,而是在JavaScript对象中定义,如下所示

代码语言:javascript
复制
var structure = [
{
    name: "First Name",
    field: "first_name"
},
{
    name: "Action",
    field: "_item",
    formatter: function(item){
        var btn = new dijit.form.Button({
            label: "Edit"
        });
    return btn;
    }
}

]

并将此结构设置为网格

代码语言:javascript
复制
<table dojoType="dojox.grid.DataGrid" id="studentsGrid" data-dojo-id="studentsGrid" columnReordering="true" sortFields="['idstudents','first_name','middle_name','last_name']" store="studentsStore"  clientSort="true" selectionMode="single" rowHeight="25" noDataMessage="<span class='dojoxGridNoData'>No students found</span>" structure=structure >
票数 5
EN

Stack Overflow用户

发布于 2012-10-08 14:50:44

这是一个工作示例,

Image in dojo Grid

票数 3
EN

Stack Overflow用户

发布于 2014-10-22 05:46:06

随着dojox.grid.DataGrid文档的保留:

从Dojo1.7开始,您应该使用dgrid或

,它们是充分利用现代浏览器和对象存储的下一代网格组件。

一段代码示例:

代码语言:javascript
复制
columns: [
            {
                field: "id",
                label: "ID"
            },
            {
                field: "name",
                label: "Name"
            },
            {
                field: "options",
                label: "Options",
                renderCell: function (obj) {
                    var cellContent = domConstruct.create("div",{});
                    var btn = new Button({
                        label: "Cell " + obj.id,
                        name: "idBtn"
                    })
                    btn.placeAt(cellContent);

                    on(btn, "click", function (evt) {
                        console.log(obj);
                    });

                    return cellContent;
                }
            }
        ]

这是如何通过在dgrid的列属性中使用renderCell函数在dgrid中执行此操作。

renderCell(object,value,node,options) -一个可选函数,将被调用以将值呈现到目标单元格中。object引用行的网格存储中的记录,value引用当前单元格的特定值(该值可能已被列定义的get函数修改)。node指的是如果renderCell没有返回任何内容,将被放置在网格中的表单元格;如果renderCell返回一个节点,则返回的节点将被放置在网格中。(注意:如果指定了格式化程序,则忽略renderCell。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11280149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档