Foxtable(狐表)用户栏目专家坐堂 → 复现多行?


  共有3000人关注过本帖树形打印复制链接

主题:复现多行?

帅哥哟,离线,有人找我吗?
yancheng
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
复现多行?  发帖心情 Post By:2016/10/31 20:31:00 [只看该作者]

1、复制两行,CTRL+C
2.粘贴两行及下面的子目,CTRL+V
3.在狐表的窗口里面,我用什么方法实现呢?
图片点击可在新窗口打开查看此主题相关图片如下:jdfw.gif
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110567 积分:562725 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/31 20:45:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=80523

具体上实例说明

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110567 积分:562725 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/2 8:56:00 [只看该作者]

复制的时候,先把数据存放下来呗。用一个变量记录

 

Dim drs As new List(of Row)
For i As Integer = Tables("清单指引").TopPosition To Tables("清单指引").BottomPosition
    drs.add(Tables("清单指引").Rows(i))
Next
vars("drs") = drs


 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/2 15:13:00 [只看该作者]

vars("drs") = drs  这个值 ,在我插入新行后,是不是还是一样会出现错误。跟我上面的代码这一样问题吧

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110567 积分:562725 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/2 16:23:00 [只看该作者]

If vars("drs") isnot nothing and vars("drs").count > 0 Then

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/2 16:29:00 [只看该作者]

问题依旧。一样的弹错信息

 回到顶部
总数 22 1 2 3 下一页