检索文件名列表格Gridview

时间:2010-10-13 15:01:57

标签: c# asp.net database gridview

我有一个Gridview,它在数据库中显示文件名。

alt text

我已经编写了从数据库中删除文件名条目的代码,但我也想从目录中删除它,那么如何从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/"));
}

感谢。

3 个答案:

答案 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. 你必须去gridview专栏 窗口
  2. 转换为文件名列 的模板列
  3. 保存并退出GridView列窗口
  4. 转到“文件”列模板设计
  5. 设置标签ID“Label1”
  6. 转到代码并使用它

    alt text

答案 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;
}

也许有更快,我不确定。