以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  帮忙看一下网络代码 3个问题 分页显示 编辑 删除  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158155)

--  作者:夜点蚊香
--  发布时间:2020/11/10 8:16:00
--  帮忙看一下网络代码 3个问题 分页显示 编辑 删除
HttpRequest事件 代码如下 我是在 foxtable中的表进行操作,没有用外部表
问题1.分页显示不起作用
问题2.编辑功能,可以修改表单中的数据.但是,当时不显示,需要重新关闭foxtable,再打开项目才能显示.如何才能及时显示修改内容
问题3,删除功能,和问题2功能一样,可以删除数据行,但是,网页操作删除后,foxtable还能看见数据,如何才能让同步及时删除后,foxtable里也看不到数据行.
Dim sb As New StringBuilder
Select Case e.Path
    Case "list.htm"
        Dim page As Integer = 0 \'默认page为0,显示第一页
        Dim pageRows As Integer = 2 \'每页10行 \'这一行写了数值2但是不起作用.
        If e.GetValues.ContainsKey("page") Then  \'如果地址中有page参数
            Integer.TryParse(e.GetValues("page"), page) \'提取page参数
        End If
        Dim StartRow As Integer = page * pageRows \'此页第一行
        Dim EndRow As Integer = (page + 1) * pageRows - 1 \'此页最后一行
        Dim lst As List(of DataRow) = DataTables("设置_星级").Select("","创建日期时间 Desc") \'按日期顺序显示
        If StartRow > lst.Count -1 Then
            e.WriteString("已经是最后一页!")
            Return
        End If
        EndRow = Math.Min(EndRow, lst.Count - 1) \'这是必须的
        
        Dim nms() As String = {"序号","星级","创建人","创建日期时间","修改人","修改日期时间"}
        sb.AppendLine("<Table border=\'1\'>")
        sb.AppendLine("<caption>订单浏览<caption></br>")
        sb.Append("<tr>")
        For Each nm As String In nms
            sb.Append("<td>" & nm & "</td>")
        Next
        sb.Append("<td></td>")
        sb.Append("<td></td>")
        sb.AppendLine("</tr>")
        For Each r As DataRow In lst
            sb.Append("<tr>")
            For Each nm As String In nms
                sb.Append("<td>" & r(nm) & "</td>")
            Next
            sb.Append("<td><a href=\'edit.htm?id=" & r("_Identify") & "&page=" & page & "\'>编辑</a></td>")
            sb.Append("<td><a href=\'delete.htm?id=" & r("_Identify") & "&page=" & page & "\'>删除</a></td>")
            sb.AppendLine("</tr>")
        Next
        sb.AppendLine("</Table></br></br>")
        If page > 0 Then
            sb.Append("<a href=\'list.htm?page=" & page - 1 & "\'>上一页</a> ")
        End If
        If EndRow < lst.Count -1 Then
            sb.Append("<a href=\'list.htm?page=" & page + 1 & "\'>下一页 </a>" )
        End If
        e.WriteString(sb.ToString)
    Case "delete.htm" \'删除订单
        If e.GetValues.ContainsKey("id") AndAlso e.GetValues.ContainsKey("page") Then
            Dim cnt As Integer
            cnt = DataTables("设置_星级").SQLDeleteFor("[_Identify] = " & e.GetValues("id"))
            If cnt > 0 Then
                sb.AppendLine("删除成功!</br></br>")
            Else
                sb.AppendLine("删除失败!</br></br>")
            End If
            sb.Append("<a href=\'list.htm?page=" & e.GetValues("page") & "\'>返回列表</a>" )
            e.WriteString(sb.ToString)
        Else
            e.WriteString("糟糕,可能出错了")
        End If
    Case "edit.htm" \'编辑订单
        If e.GetValues.ContainsKey("id") AndAlso e.GetValues.ContainsKey("page") Then
            Dim dr As DataRow = DataTables("设置_星级").SQLFind("[_Identify] = " & e.GetValues("id"))
            If dr Is Nothing Then
                e.WriteString("此订单不存在,可能已经被其他用户删除!")
                Return
            End If
            If e.PostValues.Count = 0 Then \'生成编辑页面
                sb.appendLine("<form action=\'edit.htm?id=" & e.GetValues("id") & "&page=" & e.GetValues("page") & "\' method=\'post\' id=\'form1\' name=\'form1\'>")
                sb.appendLine("星级: <input name=\'xj\' id=\'xj\' value=\'" & dr("星级") & "\'><br/><br/>")
                sb.appendLine("<input Type=\'submit\' name=\'Sumbit\' id=\'Sumbit\' value=\'确定\'>")
                sb.appendLine("</form>")
                e.WriteString(sb.ToString)
            Else \'获取用户提交的数据
                Dim inms() As String = {"xj"} \'输入框名称数组
                Dim cnms() As String = {"星级"} \'列名数组,注意列名和输入框必须一一对应,位置不能错乱
                For i As Integer = 0 To inms.Length -1
                    If e.PostValues.ContainsKey(inms(i)) Then \'必须判断,因为PostValues集合只包括已经输入的值
                        dr(cnms(i)) = e.PostValues(Inms(i))
                    End If
                Next
                dr.Save() \'用SQLAddNew增加的行,必须保存一下,否则会被丢弃.
                sb.AppendLine("编辑订单成功! <br/><br/>")
                sb.AppendLine("<a href=\'list.htm?page=" & e.GetValues("page") & "\'>返回列表</a>")
                e.WriteString(sb.ToString)
            End If
        Else
            e.WriteString("糟糕,可能出错了")
        End If
End Select
[此贴子已经被作者于2020/11/10 8:20:17编辑过]

--  作者:有点蓝
--  发布时间:2020/11/10 9:37:00
--  
首先做bs开发,您之前开发客户端的思维和理念要改变一下:bs服务端程序是放到服务器24小时运行的,一般不会有人去服务器把服务端程序当作客户端来使用。所以服务端程序界面表格能不能看到更新的数据不重要,也基本没有意义,因为没有人会去看。如果要看也应该在自己的客户端电脑看,就算一点要在服务端查看数据,也不需要重启,直接同步数据即可:http://www.foxtable.com/webhelp/topics/0115.htm

其次,服务端程序是多人使用的,所以尽量不要操作界面的主表,比如加载/分页什么的,因为可能多人都在使用这个表,a用户在加载,b用户在分页,那就乱套了。

1、代码种没看到到有分页的用法,建议还是参考帮助里的分页用法:http://www.foxtable.com/mobilehelp/topics/0114.htm
2、3、看上面说明

--  作者:夜点蚊香
--  发布时间:2020/11/10 10:06:00
--  
我再看看后面的视频,看到这个视频了,自己测试了一下,发现了这几个问题.