Gridview与FileUpload控件

时间:2009-04-23 21:26:11

标签: c# asp.net gridview file-upload

我有一个gridview,它将图像显示为其中一个列的一部分。在编辑模式下,我想让用户能够上传新的图像文件,因此我在模板的编辑部分使用FileUpload控件。

我有一个事件来捕捉这个我相信:

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

我不知道如何正确调用控件...这个功能是如何编码的?

2 个答案:

答案 0 :(得分: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));
    }
}

答案 1 :(得分: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 

警告 - 如果这是错的,我希望看到更好的方法来做到这一点!