以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于网页设计的一个问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=145173)

--  作者:1669607010
--  发布时间:2020/1/10 16:36:00
--  关于网页设计的一个问题

按照开发文档里的例子做了个出库页面,这个网页测试一切正常,能录入数据,也能扫二维码录入,现在想把这个页面移植到TabBar某个页面里,为什么移植这个页面后,TabBar这个页面之前的页面能显示,这个页面之后的页面就不显示了,把这个移植界面里的2行e.WriteString(wb.Build)删除,就能显示之后的页面了,但这个移植的出库界面的按钮就失效了。请问下面的代码应该怎么改?我现在大体知道是这句代码e.WriteString(wb.Build)用的不对,但怎么改不知道,哪位老师给指导一下


        If e.PostValues.Count = 0 Then

            wb.AppendHTML("<script src=\'/" & path & "/js/生产原料出库预估计算.js\'></script>", True)

           

            \' wb.InsertHTML("<h1  style=\'font-size:25px;\'>生产原料出库</h1>")

            wb.AddToast("","t1", "正在保存",1) \'定义提示

           

            wb.AddForm("","form1","2-smck.htm").attribute= """

            With wb.AddInputGroup("form1","ipg1","生产原料出库")

                \'wb.InsertHTML("<h1  style=\'font-size:18px;\'>原料货号</h1>")

                With .AddInputCell("ic1") \'通过InputCell增加输入框

                    .AddLabel("lnl","原料货号",0) \'增加标签,0显示在左边

                End With

                .AddInput("原料货号","","Text") \'前一个"姓名"是ID,后一个"姓名"是标题

               

                .AddInput("操作日期","出库日期","date").Value = Format(Date.Today,"yyyy-MM-dd")

                .AddInput("原料类型","原料类型","Text") \'前一个"姓名"是ID,后一个"姓名"是标题

                .AddSelect("领料单位","领料单位","散染车间|梳纺车间|兔毛纺车间|外协纺纱|其他用途")

                .AddInput("ckjs","出库件数","number").Step = "0.01"

                .AddInput("mjbz","每件标重","number").Step = "0.01"

                \'.AddInput("ygbz","预估出库","number")

               

                With .AddInputCell("sj") \'通过InputCell增加输入框

                    .AddLabel("lsj","预估出库",0)\'增加标签,0显示在左边

                    .AddInput("ygbz","number",1).Step = "0.01" \'增加输入框,1表示显示在中间

                    .AddVcodeButton("hym","预估计算",2).Attribute =""

                   

                End With

               

               

                

               

               

               

                .AddInput("出库标重","出库标重","number").Step = "0.01"

                .AddSwitch("是否清批","是否清批").Value = "True"

               

                .AddInput("外协单位","外协单位","Text") \'前一个"姓名"是ID,后一个"姓名"是标题

                .AddInput("备注","备注说明","Text") \'前一个"姓名"是ID,后一个"姓名"是标题

            End With

           

            With wb.AddButtonGroup("form1","btg5",False)

                .Add("btn1", "返回菜单","" ,"default.htm")

                \'.Add("btn2", "返回", "","1-ylck.htm")

                .Add("btn5", "扫一扫码", "button").Attribute =  " & path & "/plus/barcode_scan.html\',true,true);"""

                .Add("btn2", "确定出库", "submit")

               

            End With

           

            \'wb.InsertHTML("<script>function scaned( t, r, f ) {document.getElementById(\'原料货号\').value=r;}</script>")

            wb.InsertHTML("<script>function scaned( t, r, f ) {dosomthing(r);}</script>")

            wb.AppendHTML("<script type=\'text/javascript\' src=\'/" & path & "/js/扫码相关.js\'></script>", True)

            wb.AppendHTML("<script src=\'/" & path & "/js/生产原料出库预估计算.js\'></script>", True)

            \'引入脚本文件

            e.WriteString(wb.Build)

        Else

            Dim nms() As String = {"操作日期","原料货号","领料单位","出库标重"} \'不能为空的列名数组

            For Each nm As String In nms

                If e.PostValues.ContainsKey(nm) = False Then \'生成错误提示页

                    With wb.AddMsgPage("","msgpage","增加失败", nm & "列不能为空!")

                        .icon = "Warn" \'改变图标

                        .AddButton("btn1","返回").Attribute = ""

                    End With

                    e.WriteString(wb.Build)

                    Return \'必须返回

                End If

            Next

           

            

           

            Dim dr As DataRow = DataTables("外购原料出库").AddNew()

            dr("移动出库") =True

            dr("发料人") =UserName

           

            Dim inms() As String = {"操作日期","原料类型","原料货号","领料单位","出库标重","ckjs","是否清批","外协领料单位名称","备注"\'输入框名称数组

            Dim cnms() As String = {"操作日期","原料类型","原料货号","领料单位","出库标重","出库件数","是否清批","外协领料单位名称","备注"\'列名数组,注意列名和输入框必须一一对应,位置不能错乱

            For i As Integer = 0 To inms.Length -1

                dr(cnms(i)) = e.PostValues(Inms(i))

            Next

            dr.Save() \'保存并生成增加成功提示页面

           

            With wb.AddMsgPage("","msgpage","出库成功!","")\'生成成功提示页

                .AddButton("btn1","继续出库","2-smck.htm")

            End With

        End If


--  作者:有点蓝
--  发布时间:2020/1/10 16:41:00
--  
把这个事件的完整代码和httprequest事件完整代码放到txt文件发上来
--  作者:1669607010
--  发布时间:2020/1/10 16:50:00
--  
这是全部代码
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:移动端代码0109.zip


--  作者:有点蓝
--  发布时间:2020/1/10 17:03:00
--  
把上面第一个e.WriteString(wb.Build)去掉即可

            wb.InsertHTML("<script>function scaned( t, r, f ) {dosomthing(r);}</script>")

            wb.AppendHTML("<script type=\'text/javascript\' src=\'/" & path & "/js/扫码相关.js\'></script>"True)

            wb.AppendHTML("<script src=\'/" & path & "/js/生产原料出库预估计算.js\'></script>"True)

            \'引入脚本文件

            \'去掉e.WriteString(wb.Build)

      \'return \'或者在后面加一个


事件最后也有一个e.WriteString,实际上调用2次了。在一次返回中只能调用一次e.WriteString,否则就会冲突,重复生成网页内容,导致格式异常



--  作者:1669607010
--  发布时间:2020/1/10 22:08:00
--  
蓝老师,还有一个问题请教,现在刚开始尝试做移动开发,现在的问题是手机端加载页面很慢,复杂的页面要20秒,等的心慌,看到帮助里有使用缓存的方法,我现在手机端的页面是封装在app中的,请问一下,使用缓存是直接在代码里Dim fl As String = "d:\\web\\" & e.path
If filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".zip",".rar"
            e.CacheTime = 3600 \'缓存文件一个小时
            e.WriteFile(fl)
            Return 
        Case ".html",".htm"
            e.WriteFile(fl)
            Return 
    End Select
End If
直接加上e.CacheTime = 3600 这句代码就可以吗?还有就是这个缓存时间设置为多少有什么讲究吗?比如说我想要永久缓存可以吗?还有就是所有页面我不管是动态的还是静态的都缓存可以吗?
    还有就是这些缓存东西缓存到哪里了?是缓存到手机运行内存里还是缓存到手机储存里了?
[此贴子已经被作者于2020/1/10 22:16:29编辑过]

--  作者:有点蓝
--  发布时间:2020/1/10 22:28:00
--  
3楼这种代码要20秒?只能说是手机环境或者是服务器环境有问题了,不是代码的原因。

不存在永久的缓存。缓存在内存中,关闭浏览器(微信)就没有了。缓存的是文件,没有什么静态动态之分

--  作者:1669607010
--  发布时间:2020/1/10 23:38:00
--  
我现在刚开始做手机端,因为公司比较小,现在程序运行在局域网里,大约有30台电脑,没有专门的服务器,数据库就装在一台性能还可以的普通电脑上,PC端完全够用了,速度什么的也都可以,基本上能秒开。然后数据库所在的电脑映射到外网上,然后用手机访问页面时候,就从打开封装了网页的APP开始算,到主页完全打开就得10几20秒,然后打开其他网页两到七八秒不等,请问老师要想手机端打开页面提交数据什么的也达到1—2秒能完成,需要配置什么样的服务器,还有就是对网络带宽有什么要求,?
--  作者:有点蓝
--  发布时间:2020/1/11 8:36:00
--  
手机使用wifi接入局域网,以局域网的方式访问网页,这样慢不慢?
--  作者:1669607010
--  发布时间:2020/1/11 9:32:00
--  
手机使用局域网WIFI连接速度能提升20%左右,但还是有点慢,特别是加载TabBar页面比较多的网页时,通常要等待5秒以上,现在代码和页面这么少就这么卡,要是再添加页面就没法用了。我现在的数据库所在的主机是八代i5的处理器,是不是主机性能不行,我们公司小,没条件上大型专用服务器,现在有1万块的预算,请问是配台i7处理器的主机、还是配一台至强E5洋垃圾或者咸鱼上淘个二手服务器合适?
--  作者:有点蓝
--  发布时间:2020/1/11 10:09:00
--  
1、考虑使用grid分流一下,不要什么东西都放到一个页面里,http://www.foxtable.com/mobilehelp/topics/0077.htm
2、可以考虑把TabBar的页面做成动态加载的,而不是一开始就加载所有的页面,如:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=106788&replyID=&skin=1
3、服务器建议购买云服,按现在行情2核8G,5M带宽的服务器使用3年费用也就6000左右