我的开发环境是VS2008+.net3.5+access+VB,我的任务是:在Gridview(通过AccessDataSource1绑定到access数据库,已显示编辑按钮)中,点击编辑按钮后,在其中的图片栏中选择一张图片,然后在点击更新后完成图片的上传,同时完成图片路径的存储,最后在Gridview中显示这张图片。为此,我的准备工作如下:
1、将gridview中的图片栏定义为模板,编辑模板在其itemtemplate中放置一个image控件,在其edititemtemplate中放置一个FileUpload控件
2、在gridview的GridView1_RowUpdating事件中代码如下:
    Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GridView1.RowUpdating
       
        Dim fUpload As New FileUpload
        Dim pic_FullName As String
        If GridView1.EditIndex < 0 Then Exit Sub
        fUpload = GridView1.Rows(e.RowIndex)..FindControl("FileUpload1")
        pic_FullName = Server.MapPath("") + "\pic\" + fUpload.FileName
        fUpload.PostedFile.SaveAs(pic_FullName)    End Sub
现在的问题是,通过单步跟踪调试发现fUpload = GridView1.Rows(e.RowIndex)..FindControl("FileUpload1")这没有正确返回要找的控件,导致程序无法执行下去,请高手解答为什么?应该如何处理?最好用VB解释,谢谢!!!

解决方案 »

  1.   

                               <asp:TemplateField HeaderText="实物照片" SortExpression="实物照片">
                                        <EditItemTemplate>
                                            <asp:FileUpload ID="FileUpload1" runat="server" />
                                        </EditItemTemplate>
                                        <ItemTemplate>
                                            <asp:Image ID="Image4" runat="server" />
                                        </ItemTemplate>
                                    </asp:TemplateField>
      

  2.   

    aspx页里的代码没有动过啊?为什么要搞它?
      

  3.   

     fUpload = GridView1.Rows(e.RowIndex)..FindControl("FileUpload1") 
    VB我不会,这个不会异常么?如果不会异常应该能找到才是
      

  4.   

    我的意思是要不要Cast
    (FileUpload) GridView1.Rows(e.RowIndex)..FindControl("FileUpload1")  
      

  5.   

    是不是要加  fUpload=(FileUpload)GridView1.Rows(e.RowIndex).FindControl("FileUpload1")
    .NET是这样的
      

  6.   

     fUpload=(FileUpload)GridView1.Rows(e.RowIndex).FindControl("FileUpload1") 
    这样写肯定不对,至少在VB里边不对,难道是C#里边的写法?
      

  7.   

    刚才仔细看了看,似乎 fUpload=(FileUpload)GridView1.Rows(e.RowIndex).FindControl("FileUpload1") 这句已经找到了控件,但是为什么
    fUpload.filename为空呐?因为已经选择了要上传的图片了啊,而且在选择框里边已经存放了图片的路径了啊?怎么filename为空呐???红星星快出来啊,5.1快要过不好了啊!!
      

  8.   

    这个问题好像跟那个该死的AJAX有点关系,我也正在郁闷中....