以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  网页反馈计算结果问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173905)

--  作者:ycs5801
--  发布时间:2021/12/22 0:20:00
--  网页反馈计算结果问题
在"d:\\web"目录下,建立一个子目录lib,在这个目录建立一个文本文件,文件名为"ajaxform.js",文件内容为:

function myfunction(){
    var result = submitAjaxForm(\'form1\',\'\',false);
    if (result ==\'OK\') {show(\'dlg1\')}
    else {showDialog(\'dlg2\',\'错误\',result)}
}

Select Case e.Path
    Case "addnew.htm"
        Dim wb As New weui
        wb.AddForm("","form1","handle.htm") \'指定接收表单数据的的页面为handle.htm
        With wb.AddInputGroup("form1","ipg1","新增订单")
          
            .AddInput("数量","数量","number")
            .AddInput("单价","单价","number").Step = 0.1
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "button").Attribute= ""
        End With
        With wb.AddDialog("","dlg1", "提示","增加数据完成,是否生成价格?") 
            .AddButton("btnYes","是").Attribute = "onclick=???" 想点击是则自动计算出价格处的数值。
            .AddButton("btnNo","否","http://www.foxtable.com").Kind = 1
        End With
        With wb.AddDialog("","dlg2", "错误","") \'增加订单失败提示框
            .AddButton("btnOK","确定")
        End With
        wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>") \'引入脚本文件
        e.WriteString(wb.Build)

想在此处显示价格数值。这个价格标题和方框要一直在页面上。

    Case "handle.htm"
        Dim nms() As String = {"数量","单价"}
        For Each nm As String In nms
            If e.PostValues.ContainsKey(nm) = False Then
                e.WriteString("请输入" & nm & "!") \'返回错误消息
                Return \'必须返回
            End If
        Next
        Dim dr As DataRow = DataTables("订单").AddNew()
        For Each nm As String In nms
            dr(nm) = e.PostValues(nm)
        Next
        dr.Save()
        e.WriteString("OK") \'返回增加成功消息
End Select

狐表文件订单表,有3列,分别是单价、数量、价格,并且设置公式单价*数量=价格。现在想在手机端录入单价和价格,点击确定后,则在价格方框内调取狐表端的价格计算结果并显示在手机端,望老师指点。

--  作者:有点蓝
--  发布时间:2021/12/22 8:28:00
--  
js添加一个函数

function calc(){
    document.getElementById("jiage").innerText = document.getElementById("数量").value * document.getElementById("单价").value;
}

addnew页面
……
       With wb.AddDialog("","dlg1", "提示","增加数据完成,是否生成价格?") 
            .AddButton("btnYes","是").Attribute = "onclick=\'calc();\'想点击是则自动计算出价格处的数值。
            .AddButton("btnNo","否","http://www.foxtable.com").Kind = 1
        End With
        With wb.AddDialog("","dlg2", "错误","") \'增加订单失败提示框
            .AddButton("btnOK","确定")
        End With
wb.InsertHTML("<h3 id=\'jiage\' align=\'center\' style=\'margin-top:5px\'></h3>")
        wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>") \'引入脚本文件
        e.WriteString(wb.Build)

--  作者:ycs5801
--  发布时间:2021/12/22 9:02:00
--  
这个价格在狐表中已经计算好了,能不能直接提取狐表中的价格列中的数据?
--  作者:ycs5801
--  发布时间:2021/12/22 9:11:00
--  
就是类似这个刷新按钮。
图片点击可在新窗口打开查看此主题相关图片如下:201791515164141391.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2021/12/22 9:52:00
--  
这样整个逻辑是不合理的。没有单号之类的东西,在提示框的确定按钮的时候,根据什么查之前新增的数据?

反正价格已经计算了,就没有必要在多个对话框问用户需不需要计算了吧,不如直接显示算了
function myfunction(){
    var result = submitAjaxForm(\'form1\',\'\',false);
if(result){
        var vals=result.split("|");
        if(vals.length==2 && 
vals[0] == "OK"){
            document.getElementById("价格").value=vals[1];
        }
    }
    else {showDialog(\'dlg2\',\'错误\',result)}
}

Select Case e.Path
    Case "addnew.htm"
        Dim wb As New weui
        wb.AddForm("","form1","handle.htm") \'指定接收表单数据的的页面为handle.htm
        With wb.AddInputGroup("form1","ipg1","新增订单")
          
            .AddInput("数量","数量","number")
            .AddInput("单价","单价","number").Step = 0.1
            .AddInput("价格","价格","number")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "确定", "button").Attribute= ""
        End With
        With wb.AddDialog("","dlg2", "错误","增加订单失败") \'增加订单失败提示框
            .AddButton("btnOK","确定")
        End With
        wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>") \'引入脚本文件
        e.WriteString(wb.Build)

  Case "handle.htm"
        Dim nms() As String = {"数量","单价"}
        For Each nm As String In nms
            If e.PostValues.ContainsKey(nm) = False Then
                e.WriteString("请输入" & nm & "!") \'返回错误消息
                Return \'必须返回
            End If
        Next
        Dim dr As DataRow = DataTables("订单").AddNew()
        For Each nm As String In nms
            dr(nm) = e.PostValues(nm)
        Next
        dr.Save()
        e.WriteString("OK|" & (dr(“数量”) * dr(“单价”))) \'返回增加成功消息
End Select


--  作者:ycs5801
--  发布时间:2021/12/22 10:18:00
--  
对的,没有必要要那个对话框了。我其实就想要一个类似计算器的功能,上边两个方框输入单价和数量,下边一个方框是价格,点击按钮计算,价格方框显示结果,但是这个结果是从狐表对应的行提取出来的。
--  作者:ycs5801
--  发布时间:2021/12/22 10:42:00
--  
最后这句能不能改成:e.WriteString("OK|" & (dr(“价格”)))            
这样就直接从狐表中提取数据了。

--  作者:有点蓝
--  发布时间:2021/12/22 11:01:00
--  
可以
--  作者:ycs5801
--  发布时间:2021/12/22 13:55:00
--  
 if(vals.length==2 && vals[0] == "OK"){      这句为什么要判断一下长度等于2呢?
--  作者:有点蓝
--  发布时间:2021/12/22 14:30:00
--  
比如出错了,或者没有数据返回,就不赋值了