单元格多行内容的处理
我们知道,多文件列可以管理多个文件,图片列可以管理多个图片。
也就是说,这些列的单元格,可能会有多行的内容,每行对应一个文件。
DataRow提供了一个Lines属性,该属性以字符集合的形式返回或设置单元格内容。
Lines属性的出现,可以让我们以非常轻松的方式处理单元格的多行文本内容。
示例一
假定表中有两列,列名分别为“文件”和“数量”,前者是多文件型,希望在每行的数量列统计出文件的数量。
为此,可将DataColChanged事件代码设置为:
If
e.DataCol.name =
"文件"
Then
Dim fls As
List(of String)
fls = e.DataRow.Lines("文件")
e.DataRow("数量") = fls.Count
End
If
示例二
如果希望每行的文件列至少保留一个文件,也就是当只剩下一个文件的时候,禁止删除文件。
为此可以将BeforeDeleteFile事件代码设置为:
If
e.DataCol.name =
"文件"
Then
If
e.DataRow.Lines("文件").Count = 1
Then
MessageBox.Show("至少要保留一个文件!", "提示", MessageBoxButtons.OK,
MessageBoxIcon.Information)
e.cancel =
True
End
If
End
If
示例三
也可以直接以字符集合的形式给单元格赋值,例如从目录“c:\data”下取得所有文件,赋值给文件列:
Dim
lst As New
List(of
String)
For Each fl As String In FileSys.GetFiles("c:\data")
lst.Add(fl)
Next
Tables("表A").Current.DataRow.Lines("文件") = lst
再例如,从文件列中删除一个文件:
Dim
lst As New
List(of
String)
lst =
Tables("表A").Current.DataRow.Lines("文件")
lst.Remove("明细.xls")
Tables("表A").Current.DataRow.Lines("文件") = lst
或者增加一个文件:
Dim
lst As New
List(of
String)
lst =
Tables("表A").Current.DataRow.Lines("文件")
lst.Add("明细.xls")
Tables("表A").Current.DataRow.Lines("文件") = lst
有了Lines属性,我们可以非常灵活地处理文件列和图片列了。