首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

老有关问题了,请路过的帮忙看看,顶的也有分

2012-03-25 
老问题了,请路过的帮忙看看,顶的也有分publicvoidCreatTable(){upfilesnewDataTable( upfile )DataCol

老问题了,请路过的帮忙看看,顶的也有分
public   void   CreatTable()
        {
                upfiles   =   new   DataTable( "upfile ");
                DataColumn[]   keys   =   new   DataColumn[1];
                keys[0]   =   upfiles.Columns.Add( "filename ",   typeof(string));
                keys[0].AllowDBNull   =   false;
                upfiles.PrimaryKey   =   keys;
                upfiles.Columns.Add( "filestream ",   typeof(Stream));
                fname.Text   =   " ";
        }
        ///   <summary>
        ///   增加附件到列表
        ///   </summary>
        private   void   AddFile()
        {
                if   (upfiles   ==   null)
                {
                        CreatTable();
                }
                if   (myFile.PostedFile.FileName   !=   " ")
                {
                        string   nam   =   myFile.PostedFile.FileName;
                        int   i   =   nam.LastIndexOf( "\\ ");
                        string   filename   =   nam.Substring(i   +   1);
                        if   (upfiles.Rows.Find(filename)   ==   null)
                        {
                                Stream   fstream   =   myFile.PostedFile.InputStream;
                                DataRow   dr   =   upfiles.NewRow();
                                dr[0]   =   filename;//获取文件名
                                upfiles.Rows.Add(dr);//增加
                                ArrayList   dc   =   new   ArrayList();
                                for   (int   j   =   0;   j   <   upfiles.Rows.Count;   j++)
                                {
                                        DataRow   df   =   upfiles.Rows[j];


                                        dc.Add(df[0].ToString());
                                }
                                files.DataSource   =   dc;
                                files.DataBind();
                        }
                }
        }
        ///   <summary>
        ///   从列表移除附件
        ///   </summary>
        private   void   RemoveFile()
        {
                if   (files.SelectedItem.Value   !=   null)
                {
                        string   fname   =   files.SelectedItem.Value;
                        DataRow   foundRow   =   upfiles.Rows.Find(fname);
                        if   (foundRow   !=   null)
                                upfiles.Rows.Remove(foundRow);
                        ArrayList   dc   =   new   ArrayList();
                        for   (int   j   =   0;   j   <   upfiles.Rows.Count;   j++)
                        {
                                DataRow   df   =   upfiles.Rows[j];
                                dc.Add(df[0].ToString());
                        }
                        files.DataSource   =   dc;
                        files.DataBind();
                }
        }
        ///   <summary>
        ///   发送邮件
        ///   </summary>
        private   void   UploadFile()
        {
                string   userId   =   this.GetSessionState( "userId ");
                if   (upfiles.Rows.Count   >   0)
                {
                        fname.Text   =   " ";


                        for   (int   j   =   0;   j   <   upfiles.Rows.Count;   j++)
                        {
                                DataRow   dr   =   upfiles.Rows[j];
                                string   topath   =   Server.MapPath((this.GetSessionState( "userId ")   +   "/ ")   +   dr[0]);   //设置附件路径
                                fname.Text   +=   topath.ToString()   +   "; ";
                                myFile.PostedFile.SaveAs(topath);   //保存附件

        }  

当我把 "多附件上传地址 "   fname.Text   插入到数据库中,会出现下列情况:
比如说:我一次上传了3个文件的时候在数据库中会生成3行纪录:
A:/aaa;
A:/aaa;B:/bbb;
A:/aaa;B:/bbb;C:/ccc;
而我想要的是每次上传在数据库只生成一行纪录,如:
A:/aaa;B:/bbb;C:/ccc;
请大哥大姐们帮忙看看

[解决办法]
帮你顶
[解决办法]
看不到你插入记录的语句
[解决办法]

[解决办法]
for (int j = 0; j < upfiles.Rows.Count; j++)
{
DataRow df = upfiles.Rows[j];
dc.Add(df[0].ToString());
}

在循环内构造字串,循环外增加
[解决办法]
就一句insert,我没贴出来,多附件上传地址 =fname.Text 放在循环外更新。即在所有事件做完了。再更新数据库就可以了。
[解决办法]
比如说:我一次上传了3个文件的时候在数据库中会生成3行纪录:
A:/aaa;
A:/aaa;B:/bbb;
A:/aaa;B:/bbb;C:/ccc;
而我想要的是每次上传在数据库只生成一行纪录,如:
A:/aaa;B:/bbb;C:/ccc;
------------------------------------
你在遍历到最后一个附件的时候插入数据库的记录是正确的,推测你在循环内部作了插入,实际上只需要构造出路径串(A:/aaa;B:/bbb;C:/ccc;)在循环外部插入即可,可以看看你的数据库操作的代码
[解决办法]
使用stringbuilder.appendtext 每次都追加 filename就可以了

dr[0] = filename ,filename就应该是stringbuilder.tostring了
[解决办法]
是啊,循环外操作数据库呗,前面加个判断,FOR外添加好了

热点排行