以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  双击列名事件失效  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=87623)

--  作者:q189802114
--  发布时间:2016/7/15 9:49:00
--  双击列名事件失效
我在一个主窗口的Table添加了双击列名进行排序的事件,测试是有用的。
可是当我在另外一个主窗口的Table再次设置这个事件时,就报错了。
系统提示:“不存在名称为tbDanWei的Table”!
贴上部分出错的代码:

\'生成搜索字段
Dim cmb As WinForm.ComboBox
cmb = e.Form.Controls("cbx_Field")
For Each cl As Col In Tables("往来单位管理_tbDanWei").Cols
    cmb.Items.Add(cl.Name)
Next

\'双击列名排序
AddHandler Tables("往来单位管理_tbDanWei").grid.MouseEnterCell, AddressOf MouseEnterCellHandler
AddHandler Tables("往来单位管理_tbDanWei").grid.MouseLeaveCell, AddressOf MouseLeaveCellHandler
AddHandler Tables("往来单位管理_tbDanWei").grid.DoubleClick, AddressOf DoubleClickHandler

生成搜索字段的代码都可以正常运行。。可是双击列名就会报“不存在名称为tbDanWei的Table”这个错误,这是什么问题呀!表名没有错呀。

下面是没有报错,可以正常进行双击列名事件的代码:

\'固定合计列
With Tables("合同管理_Table1")
    .Cols("合同金额").GrandTotal = True \'指定要合计的列
    .GrandTotal = True \'显示合计模式
End With
With Tables("合同管理_Table2")
    .Cols("实收/实付金额").GrandTotal = True
    .Cols("发票金额").GrandTotal = True \'指定要合计的列
    .GrandTotal = True \'显示合计模式
End With
With Tables("合同管理_Table3")
    .Cols("计划金额").GrandTotal = True \'指定要合计的列
    .GrandTotal = True \'显示合计模式
End With
DataTables("合同管理_Table1").DataCols("合同金额").SetFormat("N")
Tables("合同管理_Table1").Grid.Name = Tables("合同管理_Table1").Name
Tables("合同管理_Table2").Grid.Name = Tables("合同管理_Table2").Name
Tables("合同管理_Table3").Grid.Name = Tables("合同管理_Table3").Name
AddHandler Tables("合同管理_Table1").grid.Paint, AddressOf Grid_Paint
AddHandler Tables("合同管理_Table2").grid.Paint, AddressOf Grid_Paint
AddHandler Tables("合同管理_Table3").grid.Paint, AddressOf Grid_Paint

\'双击列名排序
AddHandler Tables("合同管理_Table1").grid.MouseEnterCell, AddressOf MouseEnterCellHandler
AddHandler Tables("合同管理_Table1").grid.MouseLeaveCell, AddressOf MouseLeaveCellHandler
AddHandler Tables("合同管理_Table1").grid.DoubleClick, AddressOf DoubleClickHandler

--  作者:q189802114
--  发布时间:2016/7/15 9:52:00
--  
贴上双击列名的事件代码:
\'双击列头相关
Public headCol As Integer = -1

Public Sub MouseLeaveCellHandler(sender As object, e As C1.Win.C1FlexGrid.RowColEventArgs )
headcol = -1
End Sub

Public Sub MouseEnterCellHandler(sender As object, e As C1.Win.C1FlexGrid.RowColEventArgs )
If e.Row = 0 Then
    headcol = e.Col
End If
End Sub

Public Sub DoubleClickHandler(sender As object, e As System.EventArgs)
If headcol <> -1 Then
    Dim srt As String = Tables(sender.Name).Sort
    Dim name As String = Tables(sender.Name).Cols(headcol-1).Name
    If srt = Nothing
        Tables(sender.Name).Sort = name  & " ASC "
    Else If srt.Contains(Tables(sender.Name).Cols(headcol-1).Name)
        If srt.Contains("DESC") Then
            Tables(sender.Name).Sort = name & " ASC "
        Else
            Tables(sender.Name).Sort = name & " DESC "
        End If
    Else
        Tables(sender.Name).Sort = name & " ASC "
    End If
End If
End Sub

--  作者:q189802114
--  发布时间:2016/7/15 9:53:00
--  
实在弄不懂这是什么问题。明明在合同管理这个主窗口都可以实现双击列名排序的功能。
换到另外一个主窗口就出问题了。

--  作者:q189802114
--  发布时间:2016/7/15 10:34:00
--  
图片点击可在新窗口打开查看求老师解惑。
--  作者:q189802114
--  发布时间:2016/7/15 11:09:00
--  
图片点击可在新窗口打开查看有人吗。
--  作者:Hyphen
--  发布时间:2016/7/15 12:21:00
--  
上例子测试
--  作者:q189802114
--  发布时间:2016/7/15 13:53:00
--  
啥子例子。你说做一个项目测试吗。。
我咋觉得这个是Foxtable的问题!两处地方的代码完全一样呀。

--  作者:Hyphen
--  发布时间:2016/7/15 14:24:00
--  
测试没有问题。所以还是上例子说明