以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]WEUI明细表编辑以后如何保存  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=195624)

--  作者:chnfo
--  发布时间:2025/2/23 21:55:00
--  [求助]WEUI明细表编辑以后如何保存
定义Edit.htm,大意是将打开订单表的明细(不过不是用表,是用AddPreview加载明细,然后点各个明细的编辑按钮,需要编辑哪个明细,就点哪个明细的编辑按钮
Dim wb As New weui
Dim pr As DataRow \'定义主表ID
Dim drs As List(Of DataRow) = DataTables("订单2").SQLSe1ect("", 5, "[_Identify] ") \'获取前5条记录  

For Each dr As DataRow In drs
    With wb.AddPreview("", dr("ID"), dr("产品"), dr("金额"))
        .AddItem("客户", dr("客户"))
        .AddItem("雇员", dr("雇员"))
        .AddItem("单价", dr("单价"))
        .AddItem("数量", dr("数量"))
        .AddItem("折扣", dr("折扣"))
        .AddItem("日期", dr("日期"))
        .Addbutton("编辑", "EditDetail.htm?page = " & Page & " & did = " & dr("ID") & " & oid = " & pr("ID"), 1, "") 
    End With 
Next
e.WriteString(wb.Build)


有个问题,明细表的数据修改以后,如何保存?
这里定义一个明细表的编辑函数editdetail.
Dim e As RequestEventArgs = args(0)
Dim wb As New weui

Dim Page As Integer \'页码变量
If e.GetValues.ContainsKey("page") Then \'如果地址中有page参数
    Integer.TryParse(e.GetValues("page"), page) \'提取page参数
End If

Dim oid As String
If e.GetValues.ContainsKey("oid") Then \'如果地址中有主表ID参数
    oid = e.GetValues("oid") \'提取主表ID参数
End If

Dim xr As DataRow
If e.GetValues.ContainsKey("did") Then \'如果地址中有明细ID参数
    xr = DataTables("明细表").SQLFind("ID = \'" & e.GetValues("did") & "\'")
    Dim url As String = "EditDetail.htm?page=" & page & "&did=\'" & xr("ID") & "\'" & "&oid=\'" & oid & "\'" \'传递页码和明细ID
    wb.AddForm("", "form1", url)
    With wb.AddInputGroup("form1", "ipg1", "编辑明细")
        .AddHiddenValue("did", xr("ID"))
        .AddInput("Code", "编号", "text").Value = xr("Code")
        .AddInput("Title", "名称", "text").Value = xr("Title")
    End With
    
    With wb.AddButtonGroup("form1", "btg1", False)
        .Add("btnok", "确定", "submit", )  \'这个保存应当怎么写?
        .Add("btnBack", "返回", "", "Edit.htm?page=" & Page & "&oid=" & oid)  \'点击返回,就回到上一个界面
    End With
End IfIf e.PostValues.Count > 0 Then \'如果是通过提交按钮访问,则给一个已经保存的提示给用户,时长500毫秒
wb.AddToast("", "t1", "已经保存", 0).Msec = 500
End If
wb.AppendHTML("<script src=\'./lib/order.js\'></script>") \'引入脚本文件
e.WriteString(wb.Build) \'生成网页

--  作者:有点蓝
--  发布时间:2025/2/23 22:25:00
--  
确定按钮使用的是submit,会正常提交,只需要判断e.PostValues.Count > 0


If e.PostValues.Count = 0 Then
显示编辑区
else
保存的代码
end if

--  作者:chnfo
--  发布时间:2025/2/23 23:43:00
--  
editdetail函数定义如下:
Dim e As RequestEventArgs = args(0)
Dim wb As New weui

Dim Page As Integer \'页码变量
Dim oid As String
Dim xr As DataRow

If e.GetValues.ContainsKey("page") AndAlso e.GetValues.ContainsKey("oid") AndAlso e.GetValues.ContainsKey("did") Then 
    Integer.TryParse(e.GetValues("page"), page) \'提取page参数
    oid = e.GetValues("oid") \'提取主表ID参数
    xr = DataTables("TbBProD").SQLFind("ID = \'" & e.GetValues("did") & "\'")
    If xr Is Nothing Then
        Return ""
    End If
End If

Dim url As String = "EditBProDetail.htm?page=" & page & "&did=" & xr("ID") & "&oid=" & oid \'传递页码和明细ID

wb.AddForm("", "form1", url)
With wb.AddInputGroup("form1", "ipg1", "编辑明细")
    .AddHiddenValue("did", xr("ID"))
    .AddInput("Code", "编号", "text").Value = xr("Code")
    .AddInput("Title", "名称", "text").Value = xr("Title")
End With

With wb.AddButtonGroup("form1", "btg1", False)
    .Add("btnok", "确定", "submit", url)  \'\'这一句是不是有什么问题?
    .Add("btnBack", "取消", "", "Edit.htm?page=" & Page & "&oid=" & oid)
End With

If e.PostValues.Count > 0 Then 
    xr("Code") = e.PostValues("Code")
    xr("Title") = e.PostValues("Title")
    xr.Save() 
    wb.AddToast("", "t1", "已经保存", 0).Msec = 500
End If

wb.AppendHTML("<script src=\'./lib/order.js\'></script>") \'引入脚本文件
e.WriteString(wb.Build) \'生成网页


但是实际点击“确定”按钮,并没有保存为新输入的值。
名称后面加了“XX”,然后点确定,数据又回去了
ACCESS数据库有延迟?

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


[此贴子已经被作者于2025/2/23 23:52:20编辑过]

--  作者:有点蓝
--  发布时间:2025/2/24 8:43:00
--  
Dim url As String = "EditBProDetail.htm?page=" & page & "&did=" & xr("ID") & "&oid=" & oid \'传递页码和明细ID

If e.PostValues.Count > 0 Then 
    xr("Code") = e.PostValues("Code")
    xr("Title") = e.PostValues("Title")
    xr.Save() 
    wb.AddToast("", "t1", "已经保存", 0).Msec = 500
End If

wb.AddForm("", "form1", url)
With wb.AddInputGroup("form1", "ipg1", "编辑明细")
    .AddHiddenValue("did", xr("ID"))
    .AddInput("Code", "编号", "text").Value = xr("Code")
    .AddInput("Title", "名称", "text").Value = xr("Title")
End With

With wb.AddButtonGroup("form1", "btg1", False)
    .Add("btnok", "确定", "submit")
    .Add("btnBack", "取消", "", "Edit.htm?page=" & Page & "&oid=" & oid)
End With

wb.AppendHTML("<script src=\'./lib/order.js\'></script>") \'引入脚本文件
e.WriteString(wb.Build) \'生成网页


--  作者:chnfo
--  发布时间:2025/2/24 9:18:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2025.1.3.1
错误所在事件:自定义函数,EditBProDetail
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。

console报错信息如下:
EditBProDetail.htm:1 
            
            
           POST http://127.0.0.1:32177/EditBProDetail.htm?page=0&did=4b02bb18-f0f7-407c-9ad0-52c4c51b53d6&oid=fd61f691-ac73-4e11-b9a8-1f7e1e9be858 404 (foxtable web server has started(error 404))
[此贴子已经被作者于2025/2/24 9:20:41编辑过]

--  作者:chnfo
--  发布时间:2025/2/24 9:53:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:明细展示.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:展示某一订单的明细.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2025/2/24 10:18:00
--  
调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错