以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何实现同一个submit有多种判断  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175242)

--  作者:rogen
--  发布时间:2022/2/25 8:40:00
--  如何实现同一个submit有多种判断

手机端,页面放了一个table控件,用来显示不同学生,

页面下面放了一些文本框控件,

当点击table不同记录时,能将内容填充到下面的文本框控件(已实现)

 

放了2个按钮,新增,修改,

点新增,会将文本框内容作为新增记录提交到后台(已实现)

点修改,会将文本框内容作为修改值保存到后台,替换当前选择记录的内容(已实现)

 

以下代码是在表单提交时做一个必填字段的判断

wb.AddForm("","fm1",pageurl).Attribute="on submit=\'return mustInput()\'" 

对应js代码为:

fun ction mustInput(){
    var result=submit AjaxFileds("mustInput.htm","","学号","姓名",false);
    if(result=="OK"){
        return true;
    }
    else{
        showTopTips("tp1",result,1500);
        return false;
    }
}

 

新增、修改按钮代码为:

With wb.AddButtonGroup("fm1","btg1",False)
    .add("新增","新增","submit")
    .add("修改","修改","button")   /这里不知怎么能加多一个是否点击了table,选择记录的判断
End With

 

新增时,先判断必填,然后提交数据,这个没问题,已实现

现在的问题时,希望点修改时,先判断是否选择了记录,未选择时,给个提示:请先选择一条记录。

然后再判断必填项,最后提交数据,修改对应主键记录的值。

 

js代码我都想好了,就是怎么能触发执行这个函数的问题。

fun ction mustInput2(){
 if (tab.primarykey){
    var result=submit AjaxFileds("mustInput.htm","","学号","姓名",false);
    if(result=="OK"){
        return true;
    }
    else{
        showTopTips("tp1",result,1500);
        return false;
    }
}
    else{
        showTopTips("tp1",\'请选择一条记录!\',1500);
        return false;}
}

[此贴子已经被作者于2022/2/25 8:40:22编辑过]

--  作者:有点蓝
--  发布时间:2022/2/25 9:00:00
--  
.add("修改","修改","button") .arrtibute = “onclick=\'mustInput2()\'”
--  作者:rogen
--  发布时间:2022/2/25 9:10:00
--  
以下是引用有点蓝在2022/2/25 9:00:00的发言:
.add("修改","修改","button") .arrtibute = “onclick=\'mustInput2()\'”

这样是可以实现选择记录的判断和字段的必填判断

但是设为button后,就不会提交数据了,没法修改后台数据。


--  作者:有点蓝
--  发布时间:2022/2/25 9:13:00
--  
函数里不是调用了submit AjaxFileds吗,怎么会没有提交
--  作者:rogen
--  发布时间:2022/2/25 10:07:00
--  
以下是引用有点蓝在2022/2/25 9:13:00的发言:
函数里不是调用了submit AjaxFileds吗,怎么会没有提交

原来是对应页面的代码里没有写更新后台数据,加上后能更新后台数据了

现在的问题是,数据是在后台修改的,页面并未体现更新,需要刷新才行

想着提交后能自动刷新页面,参考帮助里跳转页面的代码加了一句Refresh

 

 If e.PostValues.ContainsKey("学号") = False OrElse e.PostValues.ContainsKey("姓名") = False  Then
            e.WriteString("学号/姓名为必填!")    //这里是判断必填项的,效果OK
            Return ""
 Else
            If dr IsNot Nothing Then     
                sts = new String(){"学号","姓名","性别","备注"}   //这里是更新后台数据的,效果OK
                For Each st As String In sts
                    dr(st) = e.PostValues(st)
                Next
                dr.save
            End If
            e.WriteString("OK")     //这句是返回必填判断的
          Dim url As String = "stuinfo.htm?stuno=" & e.GetValues("stuno")    //定义url
         e.WriteString("<meta http -equiv=\'Re fresh\' con tent=\'0; url=/" url & "\'>")    //根据url跳转回当前页面,实现刷新效果,不管用
 End If

 

但并未实现本页面的刷新,应该是e.writestring只能写一次的原因,

不知怎么改。

[此贴子已经被作者于2022/2/25 10:08:52编辑过]

--  作者:有点蓝
--  发布时间:2022/2/25 10:15:00
--  
http://www.foxtable.com/mobilehelp/topics/0129.htm

fun ction mustInput2(){

 if (tab.primarykey){
    var result=submit AjaxFileds("mustInput.htm","","学号","姓名",false);
    if(result=="OK"){
location="要刷新的页面.htm"
        return true;
    }

--  作者:rogen
--  发布时间:2022/2/25 11:50:00
--  

感谢蓝版,这些问题都解决了。

 

 

我在页面下面放了一个\'获奖\' 按钮,跳转到获奖记录页面

这个页面是多行记录的table,相当于1个子表
按钮的标题是动态的,根据获奖记录数动态加上后缀,比如 获奖(3) 
//已实现
子页面有增加、删除明细的功能                                                     //已实现

 

跳转到成绩页面的按钮的代码为:
Dim scorepage = "score.htm?stuno=" & stuno

Dim cnt As String = Functions.Execute("返回记录数",stuno)
With wb.AddButtonGroup("fm1","btg1",False)
    .Add("成绩","成绩"  &  cnt,"button",scorepage)
End With

 

从成绩页面返回到学生页面的按钮代码:
With wb.AddButtonGroup("fm1","btg3",False)
    Dim  backurl = "stuinfo.htm?stuno=" & stuno
    .Add("返回","返回","button",backURL)   \'生成返回原来页面的按钮         \'①
   \'.Add("返回","返回","button").Attribute = ""    \'②
End With


现在的问题是:当在学生详情页修改了数据,没有提交保存,点击跳转到了获奖记录页,添加了记录,再返回学生详情页,
若用①的返回,则刚才修改的学生信息就丢失了,但获奖统计值会更新;
若用②的返回,则能保留学生的修改信息,但获奖的统计值不会更新。

请教:如何实现从明细页返回学生详情页时,即能保留刚才修改的学生信息(此时未提交后台保存),又能更新明细表的统计值。

[此贴子已经被作者于2022/2/25 11:51:22编辑过]

--  作者:有点蓝
--  发布时间:2022/2/25 11:54:00
--  
方法1、用①的返回:点击跳转到了获奖记录页的时候同时提交保存学生详情页数据,返回后刷新学生详情页
2、用②的返回:获奖记录页返回新的统计值,然后js获取统计值后更新前端显示

--  作者:rogen
--  发布时间:2022/2/25 13:29:00
--  
以下是引用有点蓝在2022/2/25 11:54:00的发言:
方法1、用①的返回:点击跳转到了获奖记录页的时候同时提交保存学生详情页数据,返回后刷新学生详情页
2、用②的返回:获奖记录页返回新的统计值,然后js获取统计值后更新前端显示

我想用②的思路,不过不知怎么用js获取统计值并更新前端,请指教。


--  作者:有点蓝
--  发布时间:2022/2/25 13:37:00
--  
后台

e.WriteString("OK|" & datatables().comoute(xxxx))     //这句是返回必填判断的

js
fun ction mustInput2(){
 if (tab.primarykey){
    var result=submitAjaxFileds("mustInput.htm","","学号","姓名",false);
    if(result.indexOf("OK") > -1){
document.getElementById("xx控件").value=result.split("|")[1];
        return true;
    }