layui-table的相关问题

2018-12-14  本文已影响0人  JerryLoveCoding

layui--table格式:

这里介绍一个非demo的写法:

1.在html中直接写table,而不是在js中渲染。这里注意将lay-data设置一下,绑定一个id,方便js中重载绑定这个table

       lay-data="{page:true, id:'mainList'}"

       lay-filter="mainList" lay-size="sm">

        <th lay-data="{checkbox:true, fixed: true}">

        <th lay-data="{field:'name',sort: true,width:250}">项目名称

        <th lay-data="{field:'establish_dept',sort: true,width:200}">发布部门

        <th lay-data="{field:'establish_time',width:150}">发布时间

        <th lay-data="{field:'startdate',width:150}">开始时间

        <th lay-data="{field:'enddate',width:150}">结束时间

        <th lay-data="{field:'project_level',width:10}">项目级别

</table>

然后在js中重载table:

var config = {};//table的参数,如搜索key,点击tree的id

var mainList =function (options) {//前面注意要定义layui.table,在layui.use里也记得添加table

if (options != undefined) {

$.extend(config, options);

}

table.reload('mainList',

{

elem:"#mainList",

url: urls,

where: config,

response:{//response定义返回json数据的状态码,返回信息,返回数据行数和数据流

    statusName:"code",//数据状态的字段名称,默认“code”

    statusCode:0,//成功的状态码

    msgName:"msg",//状态信息名称,默认msg

    countName:"count",//数据总数字段名称,就是table显示多少行,默认count

    dataName:"data",},//数据列表

});

};

mainList();

然后,在后端要返回一个官方定义的table返回数据。不符合table的数据格式要求就会报错,所以要对后端object.all的数据进行处理:

def inquiry(request):

if request.method =="GET":

projects = EstablishProject.objects.all()//这里只是一个QuerrySet数据格式

data = []#table这里需要的data是一个列表,每一行数据是一个元素,每个元素又是个字典

detail_data = {}#单行数据用detail_data表示,然后通过for循环不断更新detail_data,存入data列表中

count =0

for detailin projects:

detail_data = dict()#对每一次的for循环,都先清空detail_data,不然数据可能无法进行更新

detail_data["id"] = detail.id

detail_data["name"] = detail.name

detail_data["startdate"] = str(detail.startdate)

detail_data["enddate"] = str(detail.enddate)

detail_data["establish_dept"] = detail.establish_dept

detail_data["establish_time"] = str(detail.establish_time)

detail_data["project_level"] = detail.project_level

print(detail_data)

data.append(detail_data)

count = count +1

      postmsg = {"code":0, "msg":"", "count": count, "data": data}

print(postmsg)

return HttpResponse(json.dumps(postmsg), content_type="application/json")

layui的table问题:

在Django中,使用demo中的写法,即通过把后端转化为json数据然后异步动态加载数据。这里相较于在html中写一个内嵌的python语句进行一个for循环get到数据来讲要高级一点,而且后面再做table重载也更加方便,但是我们在做的时候,发现报错:返回的数据状态异常:paramerror

然后我看了很多文章,这里将所有可能出现这个报错的原因都总结一下。

1.后端返回的数据不是json格式的,layui.table需要json格式的数据,不然只能做成同步提交的静态页面

2.后端返回的数据不是按照layui的table数据流要求,详见:官方定义的table返回数据

3.数据不能显示,print打印不出数据:原因可能是直接用object.all()返回的东西放到data[]里,这肯定不行的,因为querryset格式这里是列表是不认的(因为我print列表没有数据)。需要写个循环通过字典来获取所有数据。

上一篇下一篇

猜你喜欢

热点阅读