以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]分项目存储附件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65810)

--  作者:chnfo
--  发布时间:2015/3/23 16:33:00
--  [求助]分项目存储附件
局域网使用。管理多个项目,需要上传附件,但每个项目都有月报告,月份肯定有重名的。如何在上传附件时:1.在attachments下增加项目子目录,把这个项目的附件放到这个项目下?2.上传附件时,自动读取附件名,放到名称列,3.限制一行只能上传一个附件
--  作者:Bin
--  发布时间:2015/3/23 16:38:00
--  
http://www.foxtable.com/help/topics/2209.htm
--  作者:chnfo
--  发布时间:2015/3/23 17:23:00
--  
如果一次添加多个附件,如何解析成一个个的,分别增加成各自的行呢?
--  作者:Bin
--  发布时间:2015/3/23 17:26:00
--  
BeforeAttachFile 事件每个都会触发一次的
--  作者:chnfo
--  发布时间:2015/3/23 17:31:00
--  
我是想在表中每个附件占一行
--  作者:chnfo
--  发布时间:2015/3/23 17:32:00
--  
一次上传多个,每个一行显示。
比如一个项目有多份设计图(图名不重复),希望一次性添加多份附件(如图纸A,图纸B,图纸C)的时候,能自动在表中添加三行,分别显示名称图纸A、图纸B、图纸C

[此贴子已经被作者于2015/3/23 20:57:36编辑过]

--  作者:Bin
--  发布时间:2015/3/24 8:58:00
--  
遍历选中的文件,添加行


并且自行编码复制文件到指定路径

--  作者:狐狸爸爸
--  发布时间:2015/3/24 9:57:00
--  

1、自己做个增加文件的按钮:
 
Dim dlg As New OpenFileDialog
dlg.MultiSelect = True
If dlg.ShowDialog = DialogResult.OK Then
    For Each fl As String In dlg.FileNames
          Dim dr as Datarow = dataTables("表名").AddNew()
           dr("列名") = FileSys.GetName(fl)
    Next
End If
 
2、或者这样编写BeforeattatchFile:
 
 
Select Case e.DataCol.Name
    Case "图片" \'如果在图片列插入文件
       if e.datarow.Isnull("图片") = False then \'如果原来有文件
           e.cance =true
           dim dr as datarow = e.datatable.AddNew()
           dr("图片") = e.FileName
       end if
End Select

大概如此,细节自己调整


--  作者:chnfo
--  发布时间:2015/3/24 14:55:00
--  
试了哈,貌似有点问题,详见表事件
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:关于上传附件的问题.rar


--  作者:狐狸爸爸
--  发布时间:2015/3/24 15:14:00
--  
没有复制,你e.Cancel了,文件不会自动添加到目标文件夹,需要用代码复制过去:
 
Select Case e.DataCol.Name
    Case "UploadAnnex"
        If e.DataRow.IsNull("UploadAnnex") = False Then \'如果上传附件列不为空,表示这一行有数据
            e.Cancel = True
            e.SubFolder = StoreFile & "\\" & PID \'设置存放附件路径,它在共享文件夹里
            Dim cs As String = StoreFile  & "\\" & PID  & "\\" & e.FileName
            If FileSys.FileExists(cs) = False  Then \'如果服务器不存在这个文件
                Dim dr As DataRow = e.DataTable.AddNew
                dr("UploadAnnex") = e.FileName  
                dr("Title") = e.FileName
                Filesys.CopyFile(e.SourceFolder & e.FileName ,cs,True) \'复制文件
            End If
        End If
End Select