以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何自动添加多文件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=32791)

--  作者:狂飙YY
--  发布时间:2013/5/8 11:51:00
--  [求助]如何自动添加多文件
将某列设为多文件,如何通过代码添加多个文件?目前自己只能添加一个
--  作者:don
--  发布时间:2013/5/8 13:45:00
--  

单元格多行内容的处理

我们知道,多文件列可以管理多个文件,图片列可以管理多个图片。
也就是说,这些列的单元格,可能会有多行的内容,每行对应一个文件。

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属性,我们可以非常灵活地处理文件列和图片列了。