2009-04-23 53 views
3

我有一個gridview,它將圖像顯示爲其中一列的一部分。在編輯模式下,我想讓用戶能夠上傳新的圖像文件,因此我在模板的編輯部分使用了FileUpload控件。Gridview和FileUpload控件

我有一個事件捕捉到了這個,我相信:

 protected void GridVew1_RowUpdated(object sender, GridViewUpdateEventArgs e) 
    {   
     if (FileUpload1.HasFile) 
     { 
      FileUpload1.SaveAs(Server.MapPath("images/hardware/" + FileUpload1.FileName)); 
     } 
    } 

我不知道如何正確地調用控件,但...這是如何編碼的功能?

回答

4

首先,你需要處理RowUpdating事件,而不是RowUpdated。然後,您需要在該行中找到對FileUpload控件的引用。

重要提示:您需要知道控件所在列的序號位置。在我的例子中,我將它設置爲0,假設它是第一列。否則,您需要通過Cells集合才能找到它。

protected void gridView_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = gridView.Rows[e.RowIndex]; 
    FileUpload fileUpload = row.Cells[0].FindControl("fileUpload1") as FileUpload; 
    if (fileUpload != null && fileUpload.HasFile) 
    { 
     fileUpload.SaveAs(Server.MapPath("images/hardware/" + fileUpload.FileName)); 
    } 
} 
+0

感謝文件上傳完美。我看到Cells [0],但似乎找到控制,無論我設置爲...不知道爲什麼。 – Kolten 2009-04-23 21:51:41

1

如果我理解你將有你在這裏做什麼,找到該行

所以在VB一些這樣的事

Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating 

     Dim aRow As GridViewRow = Me.GridView1.Rows(e.RowIndex) 

    dim xFileUpload as fileupload = CType(aRow.FindControl("FileUpload1"), FileUpload) 

    xFileUpload. save file etc etc etc 

End Sub 

買者在控制 - 如果這是錯的我很想看到更好的方式來做到這一點!