C# 从Gridview检索文件名列

C# 从Gridview检索文件名列,c#,asp.net,database,gridview,C#,Asp.net,Database,Gridview,我有一个Gridview,它显示数据库中的文件名 我已经编写了从数据库中删除文件名条目的代码,但我还想从目录中删除它,那么如何从Gridview中检索文件名呢 我不想执行另一个select命令来检索文件名 代码: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { int Fid = (int)GridView1.DataKeys[e.RowIndex].Value;

我有一个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/"));
}

谢谢。

使用以下代码并执行步骤

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);
}
    
  • 必须转到gridview列 窗口

  • 将“转换为文件名”列转换为 模板字段

  • 保存并退出GridView列窗口

  • 转到文件列模板设计

  • 设置标签id“Label1”

  • 转到代码并使用它


  • 使用以下代码并执行以下步骤

    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);
    }
        
    
  • 必须转到gridview列 窗口

  • 将“转换为文件名”列转换为 模板字段

  • 保存并退出GridView列窗口

  • 转到文件列模板设计

  • 设置标签id“Label1”

  • 转到代码并使用它


  • 出于性能方面的考虑,我不会过分使用此选项添加大量键,但您可以通过将GridView的DataKeys属性设置为“fid,filename”来设置GridView的DataKeys属性,以包括文件名列以及已设置的fid,然后在删除方法期间使用GridView1.DataKeys[e.RowIndex].Values方法按行检索数据键,其中按索引检索数据键,因此如果数据键为“FID,文件名”,FID将为GridView1.DataKeys[e.RowIndex]。值[0]和文件名将为GridView1.DataKeys[e.RowIndex].Values[1]。

    出于性能原因,我,使用此选项添加大量键不会太过火,但您可以通过将GridViews DataKeyNames属性设置为等于“fid,filename”,然后在删除方法期间使用GridView1.DataKeys[e.RowIndex]按行检索数据键,从而将GridView的DataKeys属性设置为包含文件名列以及已设置的fid.Values方法,其中按索引检索数据键,因此如果数据键为“FID,文件名”,FID将为GridView1。数据键[e.RowIndex]。值[0]和文件名将为GridView1。数据键[e.RowIndex]。值[1]。

    我通过以下方式直接获取字符串(文件名):

    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;
    }
    
    也许会更快,我不确定。

    我通过以下方式直接获取字符串(文件名):

    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;
    }
    
    也许会更快,我不确定