从item.html页面中复制部分脚本
- datagrid请求的url为/showItem
- 填充的列属性中数据除了tb_item表以外,还有CategoryName是商品对应的类目名称,存在于tb_item_cat表中,所以在查询时是两表查询
$('#item_table').datagrid({
url: '/showItem',
columns: [[
{field: 'Id', title: '商品ID', width: 100},
{field: 'Title', title: '商品标题', width: 100},
{field: 'CategoryName', title: '叶子类目', width: 100},
{field: 'SellPoint', title: '卖点', width: 100},
{field: 'Price', title: '价格', width: 100},
{field: 'Num', title: '库存数量', width: 100},
{field: 'Barcode', title: '条形码', width: 100},
{field: 'Status', title: '状态', width: 100},
{field: 'Created', title: '创建日期', width: 100},
{field: 'Updated', title: '更新日期', width: 100}
]],
- EasyUI中Datagrid分页时要求返回数据格式为:(不是EgoResult了,否则无法正确显示)
{"rows":当前页数据,"total":总条数}
代码实现
- package commons
package commons
type Datagrid struct {
//当前页显示的数据
Rows interface{} `json:"rows"`
//总个数
Total int `json:"total"`
}
- 在src下新建文件夹item,并在item文件夹下新建TbItem.go
package item
//商品
type TbItem struct {
Id int
Title string
SellPoint string
Price int
Num int
Barcode string
Image string
Cid int
Status int8
Created string
Updated string
}
- 在item下新建TbItemDao.go实现数据访问,注意当数据库中有NULL值时的转换
package item
import (
"commons"
"fmt"
"database/sql"
)
/*
rows:每页显示的条数
page:当前第几页
*/
func selByPageDao(rows,page int) []TbItem{
//第一个表示:从哪条开始查询,0算起 第二个:查询几个
r,err:=commons.Dql("select * from tb_item limit ?,?",rows*(page-1),rows)
if err!=nil{
fmt.Println(err)
return nil
}
ts:=make([]TbItem,0)
for r.Next(){
var t TbItem
var s sql.NullString
//如果直接使用t.Barcode由于数据库中列为Null导致填充错误
r.Scan(&t.Id,&t.Title,&t.SellPoint,&t.Price,&t.Num,&s,&t.Image,&t.Cid,&t.Status,&t.Created,&t.Updated)
t.Barcode=s.String
ts=append(ts,t)
}
commons.CloseConn()
return ts
}
-
在item文件夹下新建TbItemService.go编写业务代码
-
目前不考虑总个数的问题
package item
import "commons"
func showItemService(page,rows int) (e *commons.Datagrid){
ts:=selByPageDao(rows,page)
if ts!=nil{
e= new(commons.Datagrid)
e.Rows=ts
return
}
return nil
}