2011-08-27 7 views
0

私はcsvファイルをアップロードするためのこれらのコードを持っています。また、その内容を表示するためにGridViewを配置しました。今、私がしたいのは、GridViewからエラーラインを表示することです。たとえば、特定の列や行に単語がない場合、その特定の行が空であることを表示したい場合、ユーザーが再アップロードする必要がある場合その特定の行が更新されます。事は、私はこれで本当に新しいです、誰かが私を助けることを願っています!私はエラー行を取得してウェブサイトに表示する方法を知らない。これらは私のコードです:グリッドビューからエラーラインを表示する方法は?

protected void btnUpload_Click(object sender, EventArgs e) 
    { 
     string strFileNameOnServer = fileUpload.PostedFile.FileName; 
     string fileExt = 
     System.IO.Path.GetExtension(fileUpload.FileName); 


     if (fileUpload.PostedFile != null && fileExt == ".csv") 
     { 

      try 
      { 

       //fileUpload.PostedFile.SaveAs(ConfigurationManager.AppSettings + appDataPath + "\\" + strFileNameOnServer); 
       fileUpload.PostedFile.SaveAs(Server.MapPath("~/Uploaded")); 
       //string appPath = HttpContext.Current.Request.ApplicationPath; 
       // string physicalPath = HttpContext.Current.Request.MapPath("~/MajorProject"); 
       Label1.Text = "File name: " + 
         fileUpload.PostedFile.FileName + "<br>" + 
         fileUpload.PostedFile.ContentLength + " kb<br>" + 
         "Content type: " + 
         fileUpload.PostedFile.ContentType; 
      } 
      catch (Exception ex) 
      { 
       Label1.Text = "Error saving <b>" + strFileNameOnServer + "</b><br>. " + ex.Message; 
      } 
      BtnImport1.Visible = true; 
      Cancel.Visible = true; 
      fileUpload.Visible = false; 
      btnUpload.Visible = false; 
     } 
     else 
     { 

      Label1.Text = "Error - a file name must be specified/only csv files are allowed"; 
      return; 

     } 


     var data = File.ReadAllLines(Server.MapPath("~/Uploaded")) 
      .Select(line => line.Split(','))  
      .Select(columns => new {GuestName = columns[0], Guest_ID = columns[1], IC_Number = columns[2]}); 
     myGridView.DataSource = data; 
     myGridView.DataBind(); 

     } 

私のaspxファイルに新しい項目を追加する必要がありますか?エラー行を表示するラベルのように? csvファイルの内容には、Name、IC Number、Houseがあります。もしそうなら、誰でも私にこれを行うためのコードを表示できますか?

+0

CSVファイルをアップロードしているという事実は、あなたの質問には関係ありません。あなたの質問は、GridView内のセルにエラーを示す方法です。 –

+0

@ジョンサンダース、ああ!申し訳ありませんが、間違って質問をフォーマットし、それを変更します – Mark20

答えて

0

あなたのGridView.RowDataBoundイベントの値がないかどうかを確認できます。myGridview

例:

void myGridView_RowDataBound(Object sender, GridViewRowEventArgs e) 
    { 

    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     // Check if any of the values of mygridview row cells are empty. 
     if (e.Row.Cells[0].Text == "") 
     { 
      e.Row.Cells[0].Text = "ERROR: Guest name is empty!" 
      e.Row.Cells[0].Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red"); 
     } 
     if (e.Row.Cells[1].Text == "") 
     { 
      e.Row.Cells[1].Text = "ERROR: Guest Id is empty!" 
      e.Row.Cells[1].Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red"); 
     } 
     if (e.Row.Cells[2].Text == "") 
     { 
      e.Row.Cells[2].Text = "ERROR: Ic number is empty!" 
      e.Row.Cells[2].Attributes.CssStyle.Add(HtmlTextWriterStyle.Color, "red"); 
     } 


    } 

    } 

は、GridViewのプロパティ内でそれを宣言することを忘れないでください:

<asp:GridView ID="myGridview" 
       runat="server" 
       OnRowDataBound="myGridView_RowDataBound"> 
</asp:GridView> 
+0

ありがとう!私はtmrwで私の職場に行くときにそれを試してみる、ありがとう! – Mark20

関連する問題