某系统,登录后用Session保存登录信息创建一个新的表单,上传附件后用GridView显示出来发现上传错误后,删除某个文件,使用了GridView的RowDeleting事件:
1、先删除此文件
2、再删除此文件所在的目录
3、接着删除保存在数据库中的文件信息最后问题出现:添加多个文件没有问题,删除1个文件也没有问题,当删除第二个文件或删除后又准备添加附件时,自动清空了Session的信息。请教,何解???

解决方案 »

  1.   

    以下是GridView的RowDeleting事件代码
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //删除文件及空文件夹
            string sPath = Server.MapPath("..") + "/upload/" + DateTime.Now.ToString("yyyy-MM").Replace("-", "") + "/" + GridView1.Rows[e.RowIndex].Cells[0].Text.ToString()+"/";
           
            File.Delete(sPath + GridView1.Rows[e.RowIndex].Cells[3].Text.ToString()); //删除文件
            //判断目录是否为空,是则删除!
            int Fi = new DirectoryInfo(sPath).GetFiles().Count();
            if (Fi < 2)
            {
                System.IO.Directory.Delete(sPath, true);
            }
            //删除数据库资料
            string delsql = "delete from AttachmentTab where Tnum='" + Request["DocID"].ToString() + "' and ID='" + GridView1.Rows[e.RowIndex].Cells[0].Text.ToString() + "'";
            int revalue = db.Sqlex(delsql);
            if (revalue == 0)
            { Response.Write("<script>alert('删除操作失败')</script>"); }
            //Label3.Text = delsql.ToString();
            /*
            string sqlstr = "select * from AttachmentTab where Tnum="+Request["DocID"].ToString();
            DataTable dt = db.reDt(sqlstr);
            GridView1.DataSource = dt;
            GridView1.DataBind();
            dt.Clear();
            */
        }
      

  2.   

    莫非是 Response.Write("<script>alert('删除操作失败')</script>"); 这个问题?用这种方式试试?
    ClientScript.RegisterClientScriptBlock
      

  3.   

    删除之前判断下:if(System.IO.Directory.Exist(sPath)
    {
    //删除
    }
    )
      

  4.   

    try……catch 也没有查出问题来不过,我已经知道怎么回事了,但不知道怎么解决。
            //判断目录是否为空,是则删除!
            int Fi = new DirectoryInfo(sPath).GetFiles().Count();
            if (Fi < 2)
            {
                System.IO.Directory.Delete(sPath, true);
            }
    是这段代码造成的,我把这段注释掉以后就正常了! 不知道有人可以帮忙解决吗?