以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  uploader浏览已录入的照片  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145762)

--  作者:dengk03
--  发布时间:2020/2/6 19:52:00
--  uploader浏览已录入的照片
例子里给出了用uploader上传照片的例子,我想问下如何在再次编辑该行的时候,uploader显示出上次上传的那几张照片?代码该如何写?


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


Dim url As String = "prodedit.htm?page=" & page &  "&oid=" & pr("生产编号")  \'传递页码和订单编号
wb.AddForm("","form1",url)
With wb.AddInputGroup("form1","ipg1",iif(e.GetValues.ContainsKey("oid"),"编辑生产单","新增生产单"))
    With .AddInput("生产编号","生产编号","text")
        .Value = pr("生产编号")
        .Readonly = True
    End With
    
    .AddInput("生产日期","生产日期","date").Value = pr("生产日期")
    
    Dim str1 As String = "|" & DataTables("库名").SQLGetComboListString("库名","使用中 =  \'true\'","序号") & "|"
    str1 = str1.replace("|" & pr("生产厂") & "|","|[" & pr("生产厂") & "]|")
    .AddSelect("生产厂","生产厂",str1.trimend("|"))
    
    
    Dim str2 As String = "|" & DataTables("员工").SQLGetComboListString("姓名","在职 =  \'true\'","工号") & "|"
    str2 = str2.replace("|" & pr("负责人") & "|","|[" & pr("负责人") & "]|")
    .AddSelect("负责人","负责人",str2.trimend("|"))   

    Dim str3 As String = "|" & DataTables("产品").SQLGetComboListString("产品名称","使用中 =  \'true\'","产品编号") & "|"
    str3 = str3.replace("|" & pr("产品名称") & "|","|[" & pr("产品名称") & "]|")
    .AddSelect("产品名称","产品名称",str3.trimend("|"))   

    .AddUploader("质检记录","质检记录")  
End With

--  作者:有点蓝
--  发布时间:2020/2/7 11:38:00
--  

With
 
.AddUploader("质检记录","质检记录")  

      .AddImage(
pr("质检记录"))
End With

--  作者:dengk03
--  发布时间:2020/2/7 13:01:00
--  
.AddImage("./images/1.png")
.AddImage("d:/web/images/1.png")

以上这两种写法都是指向一个地址,但是发现用写法2的时候页面显示不出这张图片,而写法1时是正常的。是说写法2是错误的么?如果是这样那是说uploader的文件只能放在web文件夹下而不能任意指定位置么?


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/2/7 14:29:00
--  
只能放在web文件夹下。


--  作者:dengk03
--  发布时间:2020/2/7 21:53:00
--  
按照例子submit改成ajax,表单的提交结果什么都没啥问题,但是每次都触发tst3上传失败,是啥原因呢?

ajaxform.js 内容

function afterSubmit(result){
    hide("tst1");
    if (result==\'OK\') {
        show("tst2");
        location="prodlist.htm";
    }
    else{
        show("tst3",2000);
    }
}

prodedit内容

.....
With wb.AddButtonGroup("form1","btg1",False)
    .Add("btn1", "增加快检", "submit").FormAction = url & "&addnextk=true" \'加上addnext参数,表示保存后进入增加明细状态
    .Add("btn4", "增加全检", "submit").FormAction = url & "&addnextq=true" \'加上addnext参数,表示保存后进入增加明细状态
    .Add("btn2", "保存", "button").Attribute= ""  \'正常提交,保存后进入编辑状态
        
    If  e.GetValues.ContainsKey("oid") = False Then \'如过是新增订单
        .Add("btn3", "取消", "button","prodlist.htm?page=" & page & "&deloid=" & pr("生产编号")) \'删除新增订单后返回列表
    ElseIf IsNew OrElse mr IsNot Nothing  Then \'如果在给旧订单新增或修改明细,则直接返回编辑状态
        .Add("btn3", "取消", "button",url) \'返回编辑状态
    Else
        .Add("btn3", "返回", "button","prodlist.htm?page=" & page) \'返回列表
    End If
End With
wb.AddToast("","tst1", "正在上传",1)
wb.AddToast("","tst2", "上传成功",0)
wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
pr.Save() \'必须保存,而且必须在最后保存,因为SQLAddNew增加的行,保存之后就会销毁,无法再调用
If e.PostValues.Count > 0 Then \'如果是通过提交按钮访问,则给一个已经保存的提示给用户,时长500毫秒
    wb.AddToast("","t1", "已经保存",0).Msec= 500
End If
wb.AppendHTML("<script src=\'./lib/order.js\'></script>") \'引入脚本文件
wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>") \'引入脚本文件

e.WriteString(wb.Build) \'生成网页

--  作者:有点蓝
--  发布时间:2020/2/7 22:47:00
--  
完整代码放到txt文件发上来
--  作者:dengk03
--  发布时间:2020/2/8 12:06:00
--  
代码
[此贴子已经被作者于2020/2/8 12:06:30编辑过]

--  作者:dengk03
--  发布时间:2020/2/8 12:09:00
--  

[此贴子已经被作者于2020/2/10 19:36:02编辑过]

--  作者:有点蓝
--  发布时间:2020/2/8 13:49:00
--  
保存会跳转到prodsave自定义函数?这个函数是什么页面进来的,prodsave.htm?

-----------------
proedit自定义程序
Dim url As String = "prodedit.htm?page=" & page &  "&oid=" & pr("生产编号")  \'传递页码和订单编号
改为
Dim url As String = "prodsave.htm?page=" & page &  "&oid=" & pr("生产编号")  \'传递页码和订单编号

-------------------
prodsave自定义函数,加上返回值
If valid Then \'如果提交了订单明细数据
……各种原来的各种赋值保存操作
e.WriteString("OK")  ‘保存正常要返回OK,tst2才能正常弹出
else
e.WriteString("提交的数据不完整!") 
end if

--  作者:dengk03
--  发布时间:2020/2/8 22:52:00
--  
这个url的写法我是照抄例子里来的,例子里给的就是edit。
其实我现在也比较晕,不太清楚是如何从prodedit转到prodsave的。。。只是发现按照例子的写法,是可以正确提交表单的,只是显示上传失败而已。

增加订单


我们已经知道,当用户在list.htm中,单击"增加订单"按钮,会向服务器发送访问请求:
edit.htm?page=2
服务端收到这个访问请求后,触发HttpRequest事件,将请求转给Edit函数处理。

以下是edit函数的处理流程:

第11行到第13行代码,从GetValues集合中提取page参数,保存在变量page中,page变量的值等于2。
由于没有传递oid参数,第14行代码的条件成立,执行第15行到第17行代码。
第15行代码新增一个订单。
第16行代码利用自定义函数GetOrderID为新订单生成订单编号。
第17行代码将订单日期设置为当天日期。

假定新增订单编号为161203006,第27行代码合成了一个链接,保存在url中,内容为:
edit.htm?page=2&oid=161203006
第28行代码新增一个表单,数据接收链接为url,即:edit.htm?page=2&oid=161203006。
第29到第46行代码,生成了订单输入框。
由于第36行代码的条件不成立,不会生成总数量和总金额输入框。