请问下如何在Gridview删除行时同时删除相应图片我图片名是存在数据库的, 图片存在upload文件夹下图片我显示到Gridview里了, 不知道怎么在删除数据的时候同时删除图片
解决方案 »
- 想做一个统计MSN邮箱里新邮件数量的功能
- 关于gridview 中PagerSettings的问题?
- HttpPostedFile 上传文件之后 该文件被w3wp.exe打开 导致无法删除
- 请指点 我做了一个Remoting 入门的例子 出了点小问题!献分
- 神啊,救救我吧,有没有高手搞过这个问题啊
- 怪了!数据无法显示!
- 急求jmail专业版或者标准版
- 含中文的正则表达式如何写?
- 有关button的问题?
- 程序员们,快帮忙呀,今天再做不出来,我就被抄了!!!!!!!!!!!!!!!!!!!!!!
- 我建了一个class类文件,其中要引用MD5方法
- vs2008下建2.0的网站,怎样使用自带的ajax?
//删除文件
if (File.Exists(路径)
{
File.Delete(路径);
}
protected void srcEditProducts_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
{
int ProductID = (int)e.ReturnValue;//e.ReturnValue数据表的主键值 }
但可用下面代码实现删除文件:
string imgpath=Server.MapPath("~\imagepath");
string fullpath=imgpath+从数据库获取的图像文件名;
if System.Io.File.Exists(fullpath)
{
System.Io.File.Delete(fullpath);
}
其他的异常处理代码自己写吧。
只能删除记录成功的时候删除文件if(del(id))
{
if (File.Exists(路径)
{
File.Delete(路径);
} }
string fullpath=Server.MapPath("~\imagepath");
if(System.Io.File.Exists(fullpath))
{
System.Io.File.Delete(fullpath);
}
{
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();
}
#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
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,本例中仅提供思路和方法,具体情况根据你的实际需要来操作,希望对你有帮助,=.=
/// 文件删除
/// </summary>
public string delUpfile(string URL)
{
string path =System.Web.HttpContext.Current.Server.MapPath("..")+URL;
System.IO.File.Delete(path);
return path;
} 根据ID来删除数据库记录,读取路径删除图片
/// <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); //重新绑定分页控件的数据 }结贴给分
<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>