我有一个Gridview,它在数据库中显示文件名。
我已经编写了从数据库中删除文件名条目的代码,但我也想从目录中删除它,那么如何从Gridview中检索文件名呢?
我不想执行另一个select命令来检索文件名。
代码:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
sdsFiles.DeleteParameters.Clear();
sdsFiles.DeleteParameters.Add("id",Fid.ToString());
sdsFiles.Delete();
System.IO.Directory.Delete(Server.MapPath("~/Data/"));
}
感谢。
答案 0 :(得分:2)
使用以下代码并执行步骤;
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
sdsFiles.DeleteParameters.Clear();
sdsFiles.DeleteParameters.Add("id",Fid.ToString());
sdsFiles.Delete();
string fileName = ((Label)GridView1.Rows[e.RowIndex].FindControl("Label1")).Text;
System.IO.File.Delete(Server.MapPath("") + "\\" + fileName);
}
转到代码并使用它
答案 1 :(得分:2)
出于性能原因,我不会过分添加大量的键,但你可以设置GridView的DataKeys属性以包含filename列以及你已经通过设置GridViews DataKeyNames属性等于你已经设置的fid “FID,Filename”,然后在删除方法期间使用GridView1.DataKeys [e.RowIndex] .Values方法检索DataKey,其中通过索引检索DataKey,因此如果您的DataKeys是“FID,filename”FID将是GridView1.DataKeys [e.RowIndex] .Values [0]和文件名是GridView1.DataKeys [e.RowIndex] .Values [1]。
答案 2 :(得分:2)
我直接这样得到字符串(文件名):
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
GridView1.SelectedIndex = e.RowIndex;
string fileName = GridView1.SelectedRow.Cells[1].Text;
System.IO.File.Delete(Server.MapPath("") + "\\" + fileName);
int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;
sdsFiles.DeleteCommand = "Delete from Files where Fid = @id";
sdsFiles.DeleteParameters.Clear();
sdsFiles.DeleteParameters.Add("id",Fid.ToString());
sdsFiles.Delete();
GridView1.SelectedIndex = -1;
}
也许有更快,我不确定。