请问下如何在Gridview删除行时同时删除相应图片我图片名是存在数据库的, 图片存在upload文件夹下图片我显示到Gridview里了, 不知道怎么在删除数据的时候同时删除图片

解决方案 »

  1.   


    //删除文件
    if (File.Exists(路径)
    {
          File.Delete(路径);
    }
      

  2.   

    如果你绑定数据源控件可以在事件中处理:    以下是objectdatasource的事件,表示删除命令后执行的事件
     protected void srcEditProducts_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
        {
    int ProductID = (int)e.ReturnValue;//e.ReturnValue数据表的主键值    }
      

  3.   

    连同图片一起从到数据库就省事多了。
    但可用下面代码实现删除文件:
    string imgpath=Server.MapPath("~\imagepath");
    string fullpath=imgpath+从数据库获取的图像文件名;
    if System.Io.File.Exists(fullpath)
    {
       System.Io.File.Delete(fullpath);
    }
    其他的异常处理代码自己写吧。
      

  4.   

    怎么可能启动事务删除记录是在数据库删除文件是操作文件
    只能删除记录成功的时候删除文件if(del(id))
    {
       if (File.Exists(路径) 

          File.Delete(路径); 
    } }
      

  5.   

    恩 执行2个操作,先删除数据库记录执行SQL命令,再删除文件夹中的图片 文件流
    string fullpath=Server.MapPath("~\imagepath"); 
     if(System.Io.File.Exists(fullpath))

      System.Io.File.Delete(fullpath); 

      

  6.   

      protected void ibtnDelete_Click(object sender, ImageClickEventArgs e)
        {
            string id = ((ImageButton)sender).CommandArgument.ToString();
            DataTable dtDel = new DataTable();
            sqls.Fill_DT("select  filepath,albumid from  dbo.e8e_photos where photoid=" + id, dtDel);
            if(dtDel.Rows.Count>0)
            {
                //先删除文件夹的图片在删除数据
                SQLUtil.DeleteDir(Server.MapPath(dtDel.Rows[0]["filepath"].ToString()));
                sqlt.Operate("delete from dbo.e8e_photos where photoid='" + ((ImageButton)sender).CommandArgument.ToString() + "' ");
               BindPhotoData();
            }
            sqls.ConClose();
        }
      

  7.   


        #region 删除指定目录以及该目录下所有文件
        /// </summary><param name="dir">欲删除文件或者目录的路径</param>
        public static void DeleteDir(string dir)
            {
                CleanFiles(dir);//第一次删除文件
                CleanFiles(dir);//第二次删除目录
            }
         /// <summary>
            /// 删除文件和目录
            /// </summary>
            ///使用方法Directory.Delete( path, true)
        private static void CleanFiles(string dir)
            {
                if (!Directory.Exists(dir))
                {
                    File.Delete(dir);  return;
                }
                else
                {
                    string[] dirs = Directory.GetDirectories(dir);
                    string[] files = Directory.GetFiles(dir);
                    if (0 != dirs.Length)
                    {
                        foreach (string subDir in dirs)
                        {
                            if (null == Directory.GetFiles(subDir))
                            {Directory.Delete(subDir);return;}
                            else CleanFiles(subDir);
                        }
                    }
                    if (0 != files.Length)
                    {
                        foreach (string file in files)
                        { File.Delete(file);}
                    }
                    else Directory.Delete(dir);
                }
            }
        #endregion
      

  8.   


     protected void Button1_Click(object sender, EventArgs e)
        {
            int ProId = 0;
            GridView mygv = new GridView();
            mygv = (GridView)Page.Master.FindControl("ContentPlaceHolder2").FindControl("GridView1");
            if (mygv != null)
            {
                for (int i = 0; i < mygv.Rows.Count; i++)
                {
                    CheckBox checkbox = new CheckBox();
                    checkbox = (CheckBox)mygv.Rows[i].FindControl("CheckBox1");
                    if (checkbox != null)
                    {
                        if (checkbox.Checked)
                        {
                            ProId = int.Parse(mygv.Rows[i].Cells[1].Text);
                            DeletePro(ProId);
                        }
                    }            }
            }
            Bind();
        }
        protected void DeletePro(int id)
        {
    //根据行参id,判断数据库里面的指定记录,并调用DeleteOnSubmit方法删除记录
            DataConn dataconn = new DataConn();
            var querysql = (from c in dataconn.Product
                           where c.ProductId == id
                           select c).First();
            //根据产品ID,取出产品的图片地址,然后转换成绝对地址
            string str = Server.MapPath("~") + querysql.Image.Substring(1);
            if (File.Exists(str))
            {
                File.Delete(str);//图片删除
            }
            dataconn.Product.DeleteOnSubmit(querysql);
            dataconn.SubmitChanges();
        }
    我用的是LINQ进行数据库操作 Gridview里面是利用每行前面的CheckBox选定情况来删除记录的,采用母板页\内容页结构,所以使用Page.Master.FindControl,本例中仅提供思路和方法,具体情况根据你的实际需要来操作,希望对你有帮助,=.=
      

  9.   

    /// <summary>
    /// 文件删除
    /// </summary>
    public string delUpfile(string URL)
    {
    string path =System.Web.HttpContext.Current.Server.MapPath("..")+URL;
    System.IO.File.Delete(path);
    return path;
    } 根据ID来删除数据库记录,读取路径删除图片
      

  10.   


    /// <summary>
            /// 删除图书信息
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void gdvPublishList_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {                       
                string strtmp = this.gdvPublishList.DataKeys[e.RowIndex].Value.ToString();
                string strFlag = publish.delBookInfo(Convert.ToInt32(Session["pub_id"]), Convert.ToInt32(strtmp)); //删除数据的方法,返回是否删除成功
                if (strFlag == "1")
                {
                    int intBookNum = Convert.ToInt32(this.gdvPublishList.DataKeys[e.RowIndex].Value.ToString());
                    string[] pathValues = new string[2] { "", "" };
                    pathValues = publish.getBookToPic(intBookNum);
                    string strCoverPicPath = pathValues[0].ToString().Trim(); //取得封面图片相对路径
                    string strOtherPicPath = pathValues[1].ToString().Trim(); //取得插图图片相对路径                if (strCoverPicPath != "")
                    {
                        strCoverPicPath = Server.MapPath(strCoverPicPath);
                        if (File.Exists(strCoverPicPath)) //使用File.Exists判断某文件是否存在
                        {
                            File.Delete(strCoverPicPath);//删除实际封面图片
                        }
                    }
                    if (strOtherPicPath != "")
                    {
                        strOtherPicPath = Server.MapPath(strOtherPicPath);
                        if (File.Exists(strOtherPicPath)) //使用File.Exists判断某文件是否存在
                        {
                            File.Delete(strOtherPicPath);//删除实际插图图片
                        }
                    }
                    lblMsg.Text = "  提示:图书信息删除成功";
                }
                else
                    lblMsg.Text = "  错误:图书信息删除失败!请稍后再试...";
                BindPage(strCondition); //重新绑定gridview的数据
                BindPublishList(strCondition); //重新绑定分页控件的数据        }结贴给分
      

  11.   

    前台gridview删除的那一列
    <asp:TemplateField HeaderText="删除">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
                                            OnClientClick='return confirm("您确定要删除这条记录吗?")' Text="删除"></asp:LinkButton>
                                    </ItemTemplate>
                                    <ItemStyle Width="30px" />
    </asp:TemplateField>