2016-06-14 6 views
0

私はC#を使用しています。 foreachループ中にエラーが発生した場合、すべてのデータが送信された場合、またはエラーメッセージが表示され、ループが中断された場合、成功メッセージを表示するにはどうすればよいですか?C#foreach文を使用すると、エラーまたは成功メッセージが表示される

これは私の試みですが、私はメッセージを表示するための最良の方法を知らない:私はforeachを囲むためにあなたを提案したい

protected void btnUpdate_Click(object sender, EventArgs e) 
{ 
    DataDTO data = new DataDTO(); 
    BaseDAO connexion = new BaseDAO(); 
    bool success = true; 

    foreach (GridViewRow row in this.GridView1.Rows) 
    { 
     data.lblId = ((Label)row.FindControl("lblId")).Text; 


     try 
     { 
      connexion.update_database(data); 
     } 
     catch 
     { 
      // Display error message and break loop 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('<success message>')", true); 
      success = false; 
      break; 
     } 
    } 

    GridView1.EditIndex = -1; 
    LoadGrid(); 
    // Display success message 

    if (success) 
    { 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('<success message>')", true); 
    } 
} 

答えて

0

はこれを試してみてください次のように試してみてください:

protected void btnUpdate_Click(object sender, EventArgs e) 
{  
    DataDTO data = new DataDTO(); 
    BaseDAO connexion = new BaseDAO(); 
    try 
    { 
     foreach (GridViewRow row in this.GridView1.Rows) 
     { 
      // Perform operations here 
     } 
     // show success message 
    } 
    catch 
    { 
     // Show Some Error message 
     isError=true; 
    } 
    // Rest of process   
} 

eでtry..catchを使用する必要はありませんach iterationを実行する代わりに、foreachをtryブロック内に囲むことができます。そのループは自動的に解除され、例外があればキャッチが実行されます。

+1

asp.net? MessageBox.Show? –

+0

申し訳ありませんが、私は注意を払っていませんでした。今修正されました。私はこの答えがあなたの要件に合っていると思っています。 –

0

protected void btnUpdate_Click(object sender, EventArgs e) 
{ 
    DataDTO data = new DataDTO(); 
    BaseDAO connexion = new BaseDAO(); 

    foreach (GridViewRow row in this.GridView1.Rows) 
    { 
     data.lblId = ((Label)row.FindControl("lblId")).Text; 


     try 
     { 
      connexion.update_database(data); 
     } 
     catch 
     { 
      // Display error message and break loop 
     } 
    } 

    GridView1.EditIndex = -1; 
    LoadGrid(); 
    // Display success message 
} 
+0

asp.net? MessageBox.Show? –

+0

@ Dr.Stitch:良い点、間違いを指摘してくれてありがとう –

0

これはトリックを行う必要があります。

protected void btnUpdate_Click(object sender, EventArgs e) 
{ 
    DataDTO data = new DataDTO(); 
    BaseDAO connexion = new BaseDAO(); 

    try 
    { 
     foreach (GridViewRow row in this.GridView1.Rows) 
     { 
      data.lblId = ((Label)row.FindControl("lblId")).Text; 
      connexion.update_database(data); 
     } 

     GridView1.EditIndex = -1; 
     LoadGrid(); 
     // Display success message 
     // Success Alert 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Record Update Successfully')", true); 
    } 
    catch (Exception ex) 
    { 
     // Display error message and break loop 
     // Error Alert 
     ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", string.Format("alert('Record Update Failed: {0}')", ex.Message), true); 
    } 
} 

私はあなたのtry-catch文の内側にプロセス全体を囲んで示唆しています。

+0

エラーがあってもまだ成功メッセージが表示されます(確認するためにデータベースサービスを停止する前に) – DavidM

+0

両方とも警告メッセージが表示されます。 –

+0

私は答えを更新してみてください。 –

0

returnキーワードを使用してループが終了します。

私は私はあなたが.NETからのエラーマッサージを表示したい場合は、一部の例外を追加し、エラーメッセージを調達しなければならないと思いますsuccessまたはfailure

bool isSuccess = true;  
StringBuilder message = new StringBuilder(); 
foreach (GridViewRow row in this.GridView1.Rows) 
{ 
    data.lblId = ((Label)row.FindControl("lblId")).Text;    
    try 
    { 
     connexion.update_database(data); 
    } 
    catch 
    { 
     isSuccess = false; 
     // Display error message and break loop 
     return; 
    } 
} 
if(!isSuccess) 
    //Show success message 
GridView1.EditIndex = -1; 
LoadGrid(); 
+0

エラーが発生してもまだ成功メッセージが表示されます(確認するためにデータベースサービスを停止する前に) – DavidM

0

いずれかの状態を確認するためにboolean変数がかかります。

protected void btnUpdate_Click(object sender, EventArgs e) 
{ 

    DataDTO data = new DataDTO(); 
    BaseDAO connexion = new BaseDAO(); 
    try 
    { 
     foreach (GridViewRow row in this.GridView1.Rows) 
     { 
      data.lblId = ((Label)row.FindControl("lblId")).Text; 
      connexion.update_database(data); 
     } 
    } 
    catch(Exception exc) 
    { 
     MessageBox.Show(exc.Message); //message from .NET 
     //MessageBox.Show("your custom message"); // custom message. 
     isError=true; 
    }  
} 
+0

asp.net? MessageBox.Show? –

関連する問題