Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > RowData >
Error相关

RowData里面有好几个与错误信息相关的属性与方法。

HasErrors属性:直接返回当前行是否有错误信息。

GetColumnError方法:可以根据列序号、列、列名称来获得当前行相应列的错误信息。

SetError方法:可以根据列序号、列、列名称来设置当前行相应列的错误信息。

设置Error的好处是,用户知道哪一行哪一列出现了问题,可以将错误信息传递给用户而不需要像MessageBox那样中断程序的运行。这在一些场合特别适合,比如我们在大批量地往表格中复制粘贴数据的时候,在做数据检验时,如果文本的长度超过了当前列的最大长度限制,如果我们每遇到一个单元格出现此错误就弹出一个MessageBox对话框的话,在一个复制粘贴了成千上万行的数据场景时,操作者必然已经崩溃了。如果这种场景用错误信息来提示用户的话,会流畅、友好的多。我们还可以看另外一个使用场景“行编辑判断并提示”。

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
If tbl Is Nothing Then Return
Dim dr As RowData=tbl.CurrentRowData
If dr Is Nothing Then Return
'判断当前行是否有错误信息,如果有
If dr.HasErrors Then
    '获得指定列的错误信息
    Dim strErrMsg As String=dr.GetColumnError(tbl.Cols(tbl.Col).Name)
    '如果获得的错误信息不为空,则显示出来
    If Not String.IsNullOrEmpty(strErrMsg) Then
        Proj.MsgDebug.Add(strErrMsg)
    End If
    '清空所有错误信息
    dr.ClearErrors()
    '根据列的序号来设置错误信息
    dr.SetError(2,"这里赋值新的错误信息")
    '根据列的名称来设置错误信息
    dr.SetError("status","根据列的名称来设置错误信息")
End If

C#
SmGrid tbl = Proj.CurrentSmGrid;
if (tbl == null)
    return;
RowData dr = tbl.CurrentRowData;
if (dr == null)
    return;
// 判断当前行是否有错误信息,如果有
if (dr.HasErrors)
{
    // 获得指定列的错误信息
    string strErrMsg = dr.GetColumnError(tbl.Cols(tbl.Col).Name);
    // 如果获得的错误信息不为空,则显示出来
    if (!string.IsNullOrEmpty(strErrMsg))
        Proj.MsgDebug.Add(strErrMsg);
    // 清空所有错误信息
    dr.ClearErrors();
    // 根据列的序号来设置错误信息
    dr.SetError(2, "这里赋值新的错误信息");
    // 根据列的名称来设置错误信息
    dr.SetError("status", "根据列的名称来设置错误信息");
}