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", "根据列的名称来设置错误信息"); } |