2010-10-13 59 views
0

我有一個Gridview顯示數據庫中的文件名。檢索文件名列格式Gridview

alt text

我寫的代碼刪除從數據庫文件名項,但我也想從目錄中刪除它,所以如何從GridView的獲取文件名?

我不想執行另一個選擇命令來檢索文件名。

代碼:

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/")); 
} 

感謝。

回答

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

+0

+1感謝插圖:) – Searock 2010-10-13 17:04:19

+2

+1的圖片:) – 2010-10-13 17:44:46

2

出於性能方面的原因,我,不會去過分增加許多與此鍵,但您可以設置GridView的DataKeys屬性包括文件名列以及您通過設置GridViews DataKeyNames屬性等於「FID,Filename」設置的fid,然後在您的delete方法中使用GridView1.DataKeys [e.RowIndex] .Values方法替代地檢索DataKey,其中通過索引檢索DataKey,所以如果你的DataKeys是「FID,filename」,FID就是GridView1.DataKeys [e.RowIndex] .Values [0],文件名就是GridView1.DataKeys [e.Row索引] .Values [1]。

+0

+1謝謝你的建議:) – Searock 2010-10-13 17:04:47

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

或許會有越來越快,我不知道。

+0

+1請GridView1更換sdsFiles:) – Searock 2010-10-13 17:01:41

+0

@Searock好的,謝謝(錯誤):) – Aristos 2010-10-13 17:53:33