从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
}