我在 datalist 的 edit模板添加了 一个fileupload 点击更新就将图片存入数据库
不知道什么原因无法保存到后台, 我 只有50分了 希望 大家来帮忙撒
 下面是我的代码
  protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
    {
        string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); //获取索引id
 
            try
            {    
       //   FileUpload filePhote = (FileUpload)e.Item.FindControl("FileUpload1");//获取更新的图片文件
     FileUpload PhotoFile = (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1");
            if ((PhotoFile == null) || (!PhotoFile.HasFile))
            {
                return;
            }
            // 取得上传之照片文件的长度。
            int fileLen = PhotoFile.PostedFile.ContentLength;
            // 创建一个字节数组来存储文件的内容。
            byte[] Input = new byte[fileLen];
            Input = PhotoFile.FileBytes;
 using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["NetworkTopologyConnectionString"].ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand("UPDATE Topology_controlType SET Ficon = @Photo WHERE FtypeID = @Id", cn))// 更新
                {
                    cmd.Parameters.Add("@Id", SqlDbType.NVarChar, 18).Value = Id;
                    cmd.Parameters.Add("@Photo", SqlDbType.Image).Value = Input;
                    cn.Open();
                    cmd.ExecuteNonQuery();
                }
            }           
                    DataList1.EditItemIndex = -1;//
                    DataList1.DataBind();
            }
catch
{}
}

解决方案 »

  1.   

    先找到是什么原因,将try去掉,应该会报错,看看是文件没取到还是存入库有错
      

  2.   

    就是 因为不报错 所以才try的 这里忘记写 throw了
      

  3.   

       if   ((PhotoFile   ==   null)   ¦ ¦   (!PhotoFile.HasFile)) 
        { 
            return; 
        } 
    不报错,估计语句没错,就是逻辑不对,是不是执行到这句就 return 了 或是其它的地方
    你检查一下
      

  4.   

    FileUpload   PhotoFile   =   (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1"); 
    到现在为止我 怀疑问题出在这里. PhotoFile   里面没有东西.
     赋值不进去.
      

  5.   

    你用try如何知道什么错误,把错误报告贴出来
      

  6.   

             if   ((PhotoFile   ==   null)   ¦ ¦   (!PhotoFile.HasFile)) 
                            { 
                                    return; 
                            } 
    将这句注释之后 执行报错内容 为 未将对象引用设置到实例
      

  7.   

                      if       ((PhotoFile       ==       null)       ¦   ¦       (!PhotoFile.HasFile))   
                                                    {   
                                                                    return;   
                                                    }   
    将这句注释之后   执行报错内容   为   未将对象引用设置到实例
    根据上面的判断可以,可以肯定PhotoFile里面没有东西了...
      

  8.   

    FileUpload1.HasFile()判断一下FileUpload是否有文件....
      

  9.   

    FileUpload       PhotoFile       =       (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1");没有找到“FileUpload1”,不是空的问题。
      

  10.   

     为什么会找不到fileupload1?!! 我相同地方放的 textbox的值都可以获得.
    顺便说一句 FileUpload  PhotoFile   =  (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1"); 
    正确的代码为 FileUpload  PhotoFile   =  (FileUpload)e.Item.FindControl("FileUpload1");
     是我粘贴上这里的时候没弄好
      

  11.   

    FileUpload     PhotoFile       =     (FileUpload)e.Item.FindControl("FileUpload1"); 
    是能找到FileUpload1的~没什么问题~检查一下控件命名~
      

  12.   

    还有就是CommandName是否指定成了Update~
      

  13.   

     命名 没有问题的
    是 CommandName指定成了Update 要更新哦.不然指定到哪里去
      

  14.   

    这样吧~
    你把你的代码整理一下~
    再发一次~
    FileUpload   PhotoFile   =   (FileUpload)e.Item.ItemIndex.FindControl("FileUpload1"); (找不到FileUpload1)
    楼顶这句是有问题的~后来你又说改过了~
      

  15.   

    恩. 不好意思 .主要是因为更新图片的代码是通过自己定义的函数调用的. 所以粘贴的时候没粘好.太粗心了 55
    问题我已经自行解决.不是代码没有问题.
    因为我用了 ajax插件的 UpdatePanel控件 所以无法正常运行.
    给UpdatePanel控件 triggers属性增加一个postbacktriggers. postbacktriggers的crotrolid设置为datalist1
    就能正常更新 显示数据了.
    谢谢大家的关心
     结帖