以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 复现多行? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92319) |
-- 作者:yancheng -- 发布时间:2016/10/31 20:31:00 -- 复现多行? 1、复制两行,CTRL+C 2.粘贴两行及下面的子目,CTRL+V
|
-- 作者:有点蓝 -- 发布时间:2016/10/31 20:45:00 -- 参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=80523 具体上实例说明
|
-- 作者:yancheng -- 发布时间:2016/11/1 7:46:00 -- S=str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length 与 S1=str.Split(vbcr).Length 请问:S与S1是不是一样的?在什么情况下不一样呢? 全代码如下: Dim t As Table = e.Table If e.Control = True AndAlso t.Current IsNot Nothing Then Dim r As Integer = t.RowSel If e.KeyCode = keys.V Then Dim str As String = ClipBoard.GetText Dim nr As Integer = str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length + (t.RowSel) - t.Rows.Count If nr > 0 Then t.AddNew(nr) t.Select(r,t.ColSel) End If End If End If |
-- 作者:有点蓝 -- 发布时间:2016/11/1 9:05:00 -- 最后有换行的话就不一样了 Dim str As String = "123" & vbcrlf & "abc" & vbcrlf Output.Show(str.Replace(vblf,"").Trim(vbcr).Split(vbcr).Length ) Output.Show(str.Split(vbcr).Length) |
-- 作者:yancheng -- 发布时间:2016/11/1 17:41:00 -- If e.Control = True AndAlso e.KeyCode = keys.c Then With Tables("清单指引") If .TopPosition > -1 Then Vars("e.table.topPosition")= .TopPosition Vars("e.table.BottomPosition")=.BottomPosition End If End With End If If e.Control = True AndAlso e.KeyCode = keys.v Then e.cancel = True If Vars("e.table.topPosition") > -1 Then For i As Integer = Vars("e.table.BottomPosition")). To Vars("e.table.topPosition") Step -1 If Tables("清单指引").Current IsNot Nothing Then Dim dr As Row = Tables("清单指引").InsertNew() \'Tables("清单指引").Position = Tables("清单指引").FindRow(dr.DataRow) dr("子目编码") =Tables("清单指引").Rows(i)("子目编码") dr("项目特征描述") =Tables("清单指引").Rows(i)("项目特征描述") End If Next End If End If 我这样写了一下,不对,麻烦老师指导 一下。 e.table.BottomPosition 这个值,是变动的,当插入新的行后,它会变,我想是不是应该获取:datarow的行号值 。或者有其它的方法。
[此贴子已经被作者于2016/11/1 17:56:25编辑过]
|
-- 作者:有点色 -- 发布时间:2016/11/2 8:56:00 -- 复制的时候,先把数据存放下来呗。用一个变量记录
Dim drs As new List(of Row) |
-- 作者:yancheng -- 发布时间:2016/11/2 15:13:00 -- vars("drs") = drs 这个值 ,在我插入新行后,是不是还是一样会出现错误。跟我上面的代码这一样问题吧 ?
|
-- 作者:yancheng -- 发布时间:2016/11/2 15:29:00 -- KeyDown中写入: If e.Control = True AndAlso e.KeyCode = keys.c Then Dim drs As new List(of DataRow) For i As Integer = Tables("清单指引").TopPosition To Tables("清单指引").BottomPosition drs.add(Tables("清单指引").Rows(i).DataRow) Next vars("drs") = drs End If If e.Control = True AndAlso e.KeyCode = keys.v Then e.cancel = True If vars("drs") <> "" Then For Each dr As DataRow In vars("drs") 这里出错。 无法将类型为“System.Char”的对象强制转换为类型“Foxtable.DataRow” If Tables("清单指引").Current IsNot Nothing Then Dim r As Row = Tables("清单指引").InsertNew() \'Tables("清单指引").Position = Tables("清单指引").FindRow(dr.DataRow) r("子目编码") =dr("子目编码") r("项目特征描述") =dr("项目特征描述") End If Next End If End If .NET Framework 版本:2.0.50727.5485 Foxtable 版本:2016.7.29.1 错误所在事件:清单指引,KeyDown 详细错误信息: 无法将类型为“System.Char”的对象强制转换为类型“Foxtable.DataRow”。 [此贴子已经被作者于2016/11/2 15:33:07编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/11/2 16:23:00 -- If vars("drs") isnot nothing and vars("drs").count > 0 Then |
-- 作者:yancheng -- 发布时间:2016/11/2 16:29:00 -- 问题依旧。一样的弹错信息 |