2011-07-16 5 views
0

J'ai une DataTable comme ceci:Changer DataTable colonne Valeur

Attribute   Percentage  ReferenceAmount  TaxAmount 
------------  ------------  ----------------  ----------- 
    Sales    5.00    5000     250 
    VAT    2.00    250     5 
    Discount   0     0     100 

Je veux lier ce DataTable avec un GridView. Mais dans le GridView, je ne veux pas afficher 0. Au lieu de zéro, je veux juste laisser cette cellule vide. Je ne veux pas afficher d'autre chose si cela contient zéro. Comment remplacer EmptyString au lieu de zéro dans le DataTable?

Répondre

1

La méthode GridView DataBound suivant boucle à travers toutes les cellules du GridView et remplacer "0" avec une chaîne vide:

 protected void GridView1_DataBound(object sender, EventArgs e) 
     { 
      foreach (GridViewRow row in GridView1.Rows) 
      { 
       for (int i = 0; i < row.Cells.Count - 1; i++) 
       { 
        if (row.Cells[i].Text == "0") 
        { 
         row.Cells[i].Text = ""; 
        } 
       } 
      } 
     } 
1

vous pouvez facilement ajouter une propriété appelée PercentageDescription as String

public string PercentageDescription 
{ 
    return Percentage == 0 ? " " : Percentage.ToString(); 
} 
2

Je réponds à la question en retard, je sais que la réponse est déjà acceptée. Mais dans la réponse acceptée, vous itérez les lignes après la liaison de données, puis définissez la valeur.

Il est préférable de remplacer la valeur au moment DataBinding. Il viendra sur le surcoût supplémentaire de l'itération des lignes gridview.

Vous pouvez utiliser l'événement RowDataBound de GridView. Voici le code complet ..

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
if (e.Row.RowType == DataControlRowType.DataRow) 
{ 
    System.Data.DataRow dr = ((System.Data.DataRowView)e.Row.DataItem).Row; 

    if (dr["Percentage"].ToString() == "0") 
    { 
     ((Label)e.Row.FindControl("lblPercentage")).Text = ""; 
     //this is template field 
     //OR---If you don't use template field you can do like..-- 
     e.Row.Cells[1].Text = ""; 
    }  
} 
} 
+0

@Akhtar: Quoi qu'il en soit, merci beaucoup. Jusqu'à présent, j'ai beaucoup appris de vous ... – thevan

Questions connexes