以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160492) |
-- 作者:cnsjroom -- 发布时间:2021/2/4 15:01:00 -- 参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细 参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细 经查貌似明细数据没有写入数据库表 麻烦老师帮忙看看下面代码中哪个部分有问题呢 是参照帮助操作的 以下内容是专门发给有点蓝浏览 运行效果 [此贴子已经被作者于2021/2/4 16:54:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/2/4 15:07:00 -- 哪段代码是新增明细的?哪段代码又是保存明细的? |
-- 作者:cnsjroom -- 发布时间:2021/2/4 15:18:00 -- 回复:(有点蓝)哪段代码是新增明细的?哪段代码又是... \'稿件发表明细编辑 Dim mr As DataRow \'要编辑的稿件发表明细 Dim IsNew As Boolean \'此变量用于标记是否要新增明细 If e.GetValues.ContainsKey("uuid") = False OrElse e.GetValues.ContainsKey("addnext") \'如果是新增稿件基础,或这包括addnext参数 IsNew = True \'将IsNew参数设置为True,表明需要新增稿件发表明细 ElseIf e.GetValues.ContainsKey("uuid") Then \'如果传递了稿件发表明细主键 mr = DataTables("稿件发表明细").SQLFind("[uuid]=" & e.GetValues("uuid")) \'找出此稿件发表明细进行编辑 End If If IsNew OrElse mr IsNot Nothing Then With wb.AddInputGroup("form1","ipg2",iif(IsNew,"新增明细","编辑明细")) If IsNew Then \'如果是新增稿件发表明细 .AddInput("发表时间","发表时间","date") .AddInput("发表平台","发表平台","text") .AddInput("平台类型","平台类型","text") .AddInput("平台级别","平台级别","text") .AddInput("文章链接","文章链接","text") Else .AddHiddenValue("DetailID",mr("uuid")) \'插入一个隐藏的稿件发表明细主键,此值将随表单数据一并提交到服务器. .AddInput("发表时间","发表时间","date").Value = mr("发表时间") .AddInput("发表平台","发表平台","text").value = mr("发表平台") .AddInput("平台类型","平台类型","text").Value = mr("平台类型") .AddInput("平台级别","平台级别","text").Value = mr("平台级别") .AddInput("文章链接","文章链接","text").Value = mr("文章链接") End If End With End If \'生成稿件发表明细表格 If e.GetValues.ContainsKey("uuid") AndAlso srs.count > 0 Then \'如果不是新增稿件基础,且稿件发表明细行数大于0,则生成稿件发表明细表格. With wb.AddTable("form1","detailTable") \'为了区分,明细表的名字设为detailTable .head.AddRow("发表时间","发表平台","平台级别","文章链接") .ColWidth="1px,2px,8px,90px" For Each sr As DataRow In srs With .body.AddRow() .Primarykey =sr("uuid") Dim s As String=sr("发表平台") Dim s1 As String = sr("平台级别") Dim s11 As String = sr("文章链接") If s11.Length > 10 Then s11 = s11.SubString(0,25) & "..." End If .AddCells(sr("发表时间"),s,s1,s11)\'逐个单元格增加 End With Next End With \'设计菜单 With wb.AddActionSheet("","menu") .Add("mnudAdd", "增加明细").Attribute="" \'调用js函数 .Add("mnuEdit", "编辑明细").Attribute ="" .Add("mnuDelete", "删除明细").Attribute =""" .Add("mnuCancel","取消","",True) End With End If 老师 按照帮助例子中mr定义的是明细表变量 在帮助代码中也没有看见类似pr.save保存代码 如果要写mr.save应该放在哪个位置呢? 因为明细表没有数据 所以明细表格的内容也没有显示出来
|
-- 作者:有点蓝 -- 发布时间:2021/2/4 15:26:00 -- 上面这种代码是在界面新增明细的编辑控件,而不是编辑保存到数据库 http://www.foxtable.com/mobilehelp/topics/0125.htm http://www.foxtable.com/mobilehelp/topics/0134.htm
|
-- 作者:cnsjroom -- 发布时间:2021/2/4 16:54:00 -- 回复:(有点蓝)上面这种代码是在界面新增明细的编辑... Dim e As RequestEventArgs = args(0) \'保存稿件基础 Dim dr As DataRow = DataTables("稿件基础").SQLFind("uuid=\'" & e.PostValues("uuid") & "\'") Dim nms() As String = {"uuid","文章类别","文章属性","文章标题","文章作者","文章作者1","文章作者2","文章作者3","文章作者4","文章作者5","文章内容","文章时间","登记时间","登记单位"} \'"" If dr IsNot Nothing Then For Each nm As String In nms If e.PostValues.ContainsKey(nm) Then dr(nm)= e.PostValues(nm) End If Next End If dr.Save() \'保存明细 Dim valid As Boolean \'用于判断用户是否 输入了稿件发表明细数据 nms = New String() {"uuid","文章标题","发表时间","发表平台","平台类型","平台级别","文章链接","编辑人","备注"} For Each nm As String In nms If e.PostValues.ContainsKey(nm) Then valid = True \'如果 输入了稿件发表明细数据,将valid变量设置为True End If Next If valid Then \'如果提交了稿件发表明细数据 Dim sr As DataRow If e.PostValues.ContainsKey("DetailID") Then \'如果传递了稿件发表明细主键 sr = DataTables("稿件发表明细").SQLFind("[uuid]=" & e.PostValues("DetailID")) If sr Is Nothing Then \'多用户环境,必须考虑其他用户删除此明细的可能,避免程序报错 Return "" End If Else sr = DataTables("稿件发表明细").SQLAddNew() \'增加一个稿件发表明细 sr("uuid") = dr("uuid") End If For Each nm As String In nms sr(nm) = e.PostValues(nm) Next sr.Save() \'必须保存,而且必须在最后保存,因为用SQLAddNew增加的行,一旦保存,就不能再引用此行 End If .NET Framework 版本:4.0.30319.42000 Foxtable 版本:2020.5.29.8 错误所在事件:自定义函数,Save 详细错误信息: 调用的目标发生了异常。 未将对象引用设置到对象的实例。 [此贴子已经被作者于2021/2/4 17:04:08编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/2/4 17:23:00 -- 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm |