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


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

主题:复现多行?

帅哥哟,离线,有人找我吗?
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
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
yancheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/2 17:40:00 [显示全部帖子]

放弃。暂时不写它了。已经没头绪了。

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/3 9:06:00 [显示全部帖子]

 For i As Integer = Tables("清单指引").BottomPosition To Tables("清单指引").TopPosition
这个代码不执行?
For i As Integer = Tables("清单指引").TopPosition To Tables("清单指引").BottomPosition
这样就执行。 

下面是我KEYDOWN的代码:

If e.Control = True AndAlso e.KeyCode = keys.c Then
    e.cancel = True
    Dim idy As new List(of Integer)
    For i As Integer = Tables("清单指引").BottomPosition To Tables("清单指引").TopPosition
        Dim n As Integer = Tables("清单指引").Rows(i)("_Identify")
        idy.add(n)
    Next
    vars("idy") = idy


If e.Control = True AndAlso e.KeyCode = keys.v Then
    e.cancel = True
    If Tables("清单指引").Current IsNot Nothing  AndAlso vars("idy") IsNot Nothing Then
        For Each id As Integer In vars("idy")
            Dim r As Row = Tables("清单指引").InsertNew()
            r("子目编码") =DataTables("清单指引").DataRows(id-1)("子目编码")
            r("项目特征描述") =DataTables("清单指引").DataRows(id-1)("项目特征描述")
        Next
    End If
End If

我现在CTRL+V后,
粘贴是反着的顺序 。我想把它反过来。
比如:我复制的是:8.9.10行,现在粘贴出来是:10.9.8行。

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/4 10:55:00 [显示全部帖子]

KEYDOWN下写入以下代码:在Tables("清单指引")不筛选的情况下。能正常执行 。但是Tables("清单指引").filter,筛选后,就不能正常复制,粘贴了。粘贴出来是另外的行。

If e.Control = True AndAlso e.KeyCode = keys.c Then
    e.cancel = True
    Dim idy As new List(of Integer)
    For i As Integer = Tables("清单指引").BottomPosition To Tables("清单指引").TopPosition Step -1
        Dim n As Integer = Tables("清单指引").Rows(i)("_Identify")
        idy.add(n)
    Next
    vars("idy") = idy
End If 

If e.Control = True AndAlso e.KeyCode = keys.v Then
    e.cancel = True
    If Tables("清单指引").Current IsNot Nothing  AndAlso vars("idy") IsNot Nothing Then
        For Each id As Integer In vars("idy")
            Dim r As Row = Tables("清单指引").InsertNew()
            r("子目编码") =DataTables("清单指引").DataRows(id-1)("子目编码")
            r("项目特征描述") =DataTables("清单指引").DataRows(id-1)("项目特征描述")
        Next
    End If
End If


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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/11/4 11:06:00 [显示全部帖子]

如果用:有点青 的代码。会弹错。

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2016.7.29.1
错误所在事件:清单指引,KeyDown
详细错误信息:
无法将类型为“System.Char”的对象强制转换为类型“Foxtable.DataRow”。


 回到顶部
总数 13 1 2 下一页