在ASP.Net c#,在按钮点击事件上,我在数据列表中找到了FileUpload控件,它给出了错误

本文关键字:FileUpload 找到了 控件 错误 列表 Net ASP 按钮 事件 数据 | 更新日期: 2023-09-27 18:02:23

这是错误:

  • Collection被修改;枚举操作不能执行。

当每个进程试图查找项目时,会发现此错误。

 protected void SubmitButton_Click(object sender, EventArgs e)
 {
      foreach (DataListItem item in this.ImageRepeater.Items)
      {
           FileUpload fup = (FileUpload)ImageRepeater.FindControl("ImageUpload");
           if (fup.HasFile)
           {
               updateImageChanges();
               divTopImageCheckChangedmessage.Visible = false;
            }
      }         
   }

我的要求是,我想满足检查,如果没有文件加载到Fileupload控件内ASP。Net DataList则不允许,updateImageChanges();函数被击中。

我将感激你们大家。

在ASP.Net c#,在按钮点击事件上,我在数据列表中找到了FileUpload控件,它给出了错误

不确定为什么要循环遍历数据列表项,我认为你的代码可能看起来像这样:

检查这个示例代码

protected void btn_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    DataListItem di = btn.NamingContainer as DataListItem;
    FileUpload fu = di.FindControl("fu") as FileUpload;       
    if (fu.HasFile)
    {
     // save to the database :

    }

}

我认为这个错误是你的updateImageData调用方法给出的

由于updateImageChanges()不接受参数,我假设它再次迭代您的重复器项?它怎么知道要处理什么项目呢?无论您在该函数中做什么(因为您没有发布它的代码)都是错误的来源,它不在您发布的代码中。然而,这个解决方案将为您工作:

你可以更新这个函数,让它接受一个参数(比如FileUpload控件),然后把它从if语句传递给updateImageChanges()方法。这样,该方法将只更新更改,而不需要再次循环遍历您的repeater项来获取所需的内容。

像这样:

  protected void SubmitButton_Click(object sender, EventArgs e)
  {
      foreach (DataListItem item in this.ImageRepeater.Items)
      {
           FileUpload fup = (FileUpload)ImageRepeater.FindControl("ImageUpload");
           if (fup.HasFile)
           {
               updateImageChanges(fup);
               divTopImageCheckChangedmessage.Visible = false;
            }
      }         
   }
   private void updateImageChanges(FileUpload fup)
   {
       // remove your code that loops through to get to the correct file upload
       // leave code that works with current fup and use passed parameter instead of the repeater items collection
   }