本帖最后由 crazynet2011 于 2012-07-17 13:41:41 编辑

解决方案 »

  1.   

    默认UpdatePanel不能上传的
    可以参见在UpdatePanel上使用FileUpload上传文件 
    http://blog.csdn.net/zhaoqiliang527/article/details/4457961
      

  2.   

    string upFile = ((FileUpload)gdvData.Rows[e.RowIndex].FindControl("FileUpload1")).PostedFile.FileName;
    UpLoad(upFile);你这里已经错误了
    应该是FileUpload upFile =gdvData.Rows[e.RowIndex].FindControl("FileUpload1") as FileUpload;
    if(upFile!=null)
    UpLoad(upFile);
    private string UpLoad(FileUpload img)
        {
            string pictureName = "";
            pictureName = DateTime.Now.Ticks.ToString() + Path.GetFileName(img);            string path = Server.MapPath("~/Upload/Image/" + pictureName );
                img.SaveAs(path );
            return pictureName;
        }
      

  3.   

    那我把gridview的FileUpload控件改成file控件,也不行啊,参数是string就不行吗 为什么要FileUpload 类型呢
      

  4.   

    是不是没有获取到gridview里的FileUpload1的id啊?你看看数据库中有没有存入数据,要是没有的话就是没有获取到控件的值!
      

  5.   

    有,就是用gridview里的上传控件后,图片是0KB
      

  6.   

    FileUpload是上传控件,不是获取路径控件
      

  7.   

    你怎么测试的不可以啊?
    你可以直接拷贝下面的代码测试,不要做任何修改<%@ Page Language="C#" EnableViewState="true" %><%@ Import Namespace="System.Xml" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
      private static List<string> files = new List<string> { "a", "b" };
      protected void Page_Load(object sender, EventArgs e)
      {
        if (!this.IsPostBack)
        {
          BinData();
        }
      }  private void BinData()
      {
        gdvData.DataSource = files;
        gdvData.DataBind();
      }
      protected void gdvData_RowEditing(object sender, GridViewEditEventArgs e)
      {
        gdvData.EditIndex = e.NewEditIndex;
        BinData();
      }  protected void gdvData_RowUpdating(object sender, GridViewUpdateEventArgs e)
      {
        FileUpload upFile = gdvData.Rows[e.RowIndex].FindControl("FileUpload1") as FileUpload;
        Image Image1 = gdvData.Rows[e.RowIndex].FindControl("Image1") as Image;
        if (upFile != null)
        {
          Image1.Visible = true;
          Image1.ImageUrl = "~/" + UpLoad(upFile);
        }
        else
        {
          Response.Write("Error");
         }
      }  private string UpLoad(FileUpload img)
      {
        string pictureName = "";
        pictureName = DateTime.Now.Ticks.ToString() + System.IO.Path.GetFileName(img.FileName);
        string path = Server.MapPath("~/" + pictureName);
        img.SaveAs(path);
        return pictureName;
      }</script>
    <html>
    <head>
      <title></title>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:GridView ID="gdvData" runat="server" AutoGenerateColumns="false" OnRowEditing="gdvData_RowEditing"
        OnRowUpdating="gdvData_RowUpdating">
        <Columns>
          <asp:TemplateField HeaderText="图片">
            <ItemTemplate>
              xxx</ItemTemplate>
            <EditItemTemplate>
              <asp:Image ID="Image1" runat="server" Visible="false" Width="100" />
              <asp:FileUpload ID="FileUpload1" runat="server"></asp:FileUpload></EditItemTemplate>
          </asp:TemplateField>
          <asp:CommandField ShowEditButton="true" />
        </Columns>
      </asp:GridView>
      </form>
    </body>
    </html>