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

ColDataChanged数据变更之后发生的事件。与之相对的ColDataChanging事件,可以设置e.Cancel=true来取消当前修改。

ColDataChanged 数据 数据变更之后发生的事件。
ColDataChanging 数据 数据变更之前发生的事件。

下面是e参数可以获得的对象清单

Vb.Net
Public Sub SmGrid1_ColDataChanged(sender As Object,e As sanMuSoft.CS.WinForm.ColDataEventArgs)
    Dim tbl As SmGrid=sender
    'ColData变更事件,包含了下面这些对象
    Dim dt As DataTableHelp=e.DataTableHelp
    Dim col As ColData=e.ColData
    Dim dr As RowData=e.RowData
    Dim objOld As Object=e.OldValue
    Dim objNew As Object=e.NewValue
    Dim frm As BaseForm=e.Form

End Sub

C#
public void SmGrid1_ColDataChanged(object sender, sanMuSoft.CS.WinForm.ColDataEventArgs e)
{
    SmGrid tbl = sender as SmGrid;
    // ColData变更事件,包含了下面这些对象
    DataTableHelp dt = e.DataTableHelp;
    ColData col = e.ColData;
    RowData dr = e.RowData;
    object objOld = e.OldValue;
    object objNew = e.NewValue;
    BaseForm frm = e.Form;
}

示例1:数量或单价有变量时自动重新计算金额列

Vb.Net
Public Sub ColDataChanged(sender As Object,e As  sanMuSoft.CS.WinForm.ColDataEventArgs)
    Dim strColName As String=e.ColData.Name
    Select Case strColName
        Case "数量","单价"
            '数量或单价有变量时自动重新计算
            e.RowData("金额")=e.RowData("数量")*e.RowData("单价")
        Case Else
    
    End Select
End Sub

C#
public void ColDataChanged(object sender, sanMuSoft.CS.WinForm.ColDataEventArgs e)
{
    string strColName = e.ColData.Name;
    switch (strColName)
    {
        case "数量":
        case "单价":
            {
                // 数量或单价有变量时自动重新计算
                e.RowData["金额"] = e.RowData["数量"].CType<int>() * e.RowData["单价"].CType<decimal>();
                break;
            }

        default:
            {
                break;
            }
    }
}

示例2:如果修改的是“客户”列,则取消变更。

Vb.Net
Public Sub ColDataChanging(sender As Object,e As  sanMuSoft.CS.WinForm.ColDataEventArgs)
    If e.ColData.Name="客户" Then
        e.Cancel=True
    End If
End Sub

C#
public void ColDataChanging(object sender, sanMuSoft.CS.WinForm.ColDataEventArgs e)
{
    if (e.ColData.Name == "客户")
        e.Cancel = true;
}