在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();
函数被击中。
我将感激你们大家。
不确定为什么要循环遍历数据列表项,我认为你的代码可能看起来像这样:
检查这个示例代码
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
}