Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > BaseGrid > 事件 >
CurrentChanged

CurrentChanged表的当前行变更事件。表数据重新加载后也会重新定位到第一行数据,此时也会触发此事件。同时,表的筛选或排序操作也会触发此事件。另外,添加或删除当前行之前的行、删除或移动当前行本身,或将其他行移动到当前位置也会触发此事件。

另外还有一个PositionChanged事件跟此事件效果差不多。PositionChanged事件是指表的Position位置变更就会触发。

CurrentChanged 数据 表的当前行变更事件。
PositionChanged 数据 表的当前位置变更事件。此事件跟CurrentChanged事件效果类似。

示例:我们可以在主表当前行变动时,重新加载子表的信息。

Vb.Net
Public Sub CurrentChanged(sender As Object,e As System.EventArgs)
    Dim tbl As SmGrid=sender
    '要先判断一下当前行是否为空
    If tbl.CurrentRowData IsNot Nothing Then
        '获得当前窗体
        Dim frm As SmForm=tbl.Form
        '获得子表的引用
        Dim tblSub As SmGrid=frm.Grids("订单明细")
        '设置加载条件
        tblSub.DataTableHelp.LoadFilter="订单号='" & tbl.CurrentRowData("订单号") & "'"
        '开始重新加载数据
        tblSub.DataTableHelp.Load()
    End If          
End Sub

C#
public void CurrentChanged(object sender, System.EventArgs e)
{
    SmGrid tbl = sender as SmGrid;
    // 要先判断一下当前行是否为空
    if (tbl.CurrentRowData != null)
    {
        // 获得当前窗体
        SmForm frm = tbl.Form;
        // 获得子表的引用
        SmGrid tblSub = frm.Grids["订单明细"] as SmGrid;
        // 设置加载条件
        tblSub.DataTableHelp.LoadFilter = "订单号='" + tbl.CurrentRowData["订单号"].ToString() + "'";
        // 开始重新加载数据
        tblSub.DataTableHelp.Load();
    }
}