【问题标题】:Gridview with FileUpload control带有 FileUpload 控件的 Gridview
【发布时间】:2009-04-23 21:26:11
【问题描述】:

我有一个网格视图,它显示图像作为其中一列的一部分。在编辑模式下,我想让用户能够上传一个新的图像文件,所以我在模板的编辑部分使用了 FileUpload 控件。

我相信我有一个事件可以捕捉到这一点:

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

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

【问题讨论】:

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


    【解决方案1】:

    首先您需要处理 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));
        }
    }
    

    【讨论】:

    • 感谢文件上传完美。我看到了 Cells[0],但无论我将其设置为什么,它似乎都能找到控件……不知道为什么。
    • 如何为数据网格做到这一点?
    【解决方案2】:

    如果我明白你在这里做什么,你将不得不在行中找到控件

    所以在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 
    

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

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      相关资源
      最近更新 更多