0

以下のアドレスの記事を 1 件見ました

http://www.c-sharpcorner.com/UploadFile/rohatash/uploading-multiple-files-with-listbox-in-Asp-Net/

アップロードされたファイルを表示するためにリストボックスを使用する

if (ListBox1.Items.Contains(new ListItem(System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName))))
{
      Label1.Text = "File already in the ListBox";
}
else
{
      Files.Add(FileUpload1);
      ListBox1.Items.Add(System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName));
      Label1.Text = "Add another file or click Upload to save them all";
}

、今はグリッドビューでそれを行うのが好きですが、グリッドビューのコードの下に転送するのに問題があり、アップロードされたファイルの重複を防ぐことができないという問題があります。

for (int i = 0; i < count; i++)
{
     if (GridViewEfile.Rows[i].Cells[1].Text == FileName)
     {
             Label2.Text = "File already in the list";
             break;
     }
}

私がグリッドビューに対して行ったこと:

for (int i = 0; i < count; i++)
{
      if (GridViewEfile.Rows[i].Cells[1].Text == FileName)
      {
            Label2.Text = "File already in the list";
            break;
      }
}

for (int j = 0; j < count; j++)
{
      dr = dt.NewRow();
      dr["File Name"] = GridViewEfile.Rows[j].Cells[1].Text;
      dr["File Size"] = GridViewEfile.Rows[j].Cells[2].Text;
      dt.Rows.Add(dr);
}

dr = dt.NewRow();
dr["File Name"] = FileName;

if (size > 0)
     dr["File Size"] = size.ToString() + " KB";
else
     Label2.Text = "File size cannot be 0";

dt.Rows.Add(dr);

GridViewEfile.DataSource = dt;
GridViewEfile.DataBind();
4

2 に答える 2

0

これは、重複が見つかった場合でも、新しい行の追加を停止しないために発生します。

bool isDuplicate = false;

for (int i = 0; i < count; i++)
{
    if (GridViewEfile.Rows[i].Cells[1].Text == FileName)
    {
         Label2.Text = "File already in the list";
         isDuplicate = true;
         break;
    }
}

for (int j = 0; j < count; j++)
{
     dr = dt.NewRow();
     dr["File Name"] = GridViewEfile.Rows[j].Cells[1].Text;
     dr["File Size"] = GridViewEfile.Rows[j].Cells[2].Text;
     dt.Rows.Add(dr);
}

if (!isDuplicate)
{
     if (size == 0)
     {
         Label2.Text = "File size cannot be 0";
     }
     else
     {
         dr = dt.NewRow();
         dr["File Name"] = FileName;
         dr["File Size"] = size.ToString() + " KB";

         dt.Rows.Add(dr);
     }
}

GridViewEfile.DataSource = dt;
GridViewEfile.DataBind();
于 2013-02-27T14:42:05.170 に答える
0

ネストが間違っているだけです-最初のループはファイルの反復であり、2番目のループは重複を確認してください。あなたはそれを逆に持っています。

以下のスニペットを確認してください。

for (int j = 0; j < count; j++) // here is file iteration
{
   for (int i = 0; i < count; i++) // here is dupe check
   {
      if (GridViewEfile.Rows[i].Cells[1].Text == FileName)
      {
          Label2.Text = "File already in the list";
          break;
      }
   }

   dr = dt.NewRow();
   dr["File Name"] = FileName;
   if (size > 0)
      dr["File Size"] = size.ToString() + " KB";
   else
      Label2.Text = "File size cannot be 0";

   dt.Rows.Add(dr);

   GridViewEfile.DataSource = dt;

   GridViewEfile.DataBind();
   }
}
于 2013-02-27T14:42:47.190 に答える