2009-04-23 19 views
3

Ich habe eine Gridview, die ein Bild als Teil einer seiner Spalten zeigt. Im Bearbeitungsmodus möchte ich dem Benutzer die Möglichkeit geben, eine neue Bilddatei hochzuladen. Daher verwende ich das FileUpload-Steuerelement im Bearbeitungsbereich der Vorlage.Gridview mit FileUpload-Steuerelement

Ich habe ein Ereignis, dies zu erfassen ich glaube:

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

Ich weiß nicht, wie die Steuerung richtig nennen, obwohl ... Wie wird diese Funktionalität codiert?

Antwort

4

Zuerst müssen Sie die RowUpdating Ereignis behandeln statt RowUpdated. Dann müssen Sie einen Verweis auf das FileUpload-Steuerelement in dieser Zeile finden.

WICHTIG:Sie müssen die Ordinalposition der Spalte kennen, in der sich das Steuerelement befindet. In meinem Beispiel setze ich es auf 0, vorausgesetzt, es ist die erste Spalte. Andernfalls müssten Sie die Zellen-Sammlung durchsuchen, um sie zu finden.

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

Danke, dass die Datei perfekt hochgeladen wird. Ich sehe die Zellen [0], aber es scheint die Kontrolle zu finden, egal was ich darauf stelle ... nicht sicher warum. – Kolten

+0

'row.FindControl (" fileUpload1 ")' wird gut funktionieren .. – Sprintstar

1

Wenn ich verstehe, was Sie tun, hier finden Sie die Kontrolle in der Reihe

so in VB soetwas wie diese

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 

Caveat finden müssen - wenn dies falsch I würde gerne einen besseren Weg sehen, dies zu tun!