0

これはエラーです:

  • コレクションが変更されました。列挙操作が実行されない場合があります。

このエラーは、各プロセスが項目を検索しようとしたときに発生します。

 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;
            }
      }         
   }

私の要件は、ASP.Net DataList 内の Fileupload コントロールにロードされたファイルがないかどうかのチェックを満たし、updateImageChanges();関数がヒットすることを許可しないことです。

皆さんに感謝します。

4

2 に答える 2

0

updateImageChanges() はパラメーターを取らないので、リピーターアイテムをもう一度繰り返すと思いますか? どのアイテムを操作するかをどのように知るのですか? その関数で何をしていても(コードを投稿していないため)、エラーの原因であり、投稿したコードにはありません。ただし、この解決策はうまくいきます:

その関数を更新してパラメーター (FileUpload コントロールなど) を受け取り、それを if ステートメントから updateImageChanges() メソッドに渡すことができます。そうすれば、このメソッドは変更のみを更新し、必要なものを取得するためにリピーター項目を再度ループする必要はありません。

このようなもの:

  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
   }
于 2013-03-06T08:19:35.643 に答える
0

DataList Items をループしている理由がわかりません。コードは次のようになると思います。

このサンプルコードを確認してください

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 呼び出しメソッドが与えたものだと思います

于 2013-03-06T08:19:37.730 に答える