2011-07-16 111 views
0

我有一个数据表是这样的:更改数据表列值

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

我想绑定这个数据表与一个GridView控件。 但在GridView中,我不想显示0.而不是零,我只是想让该单元格为空。如果包含零,我不想显示任何其他东西。 如何在DataTable中替换EmptyString而不是零?

回答

1

以下的GridView数据绑定方法会遍历GridView中的每一个细胞和替换“0”为空字符串:

 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

您可以轻松地添加一个名为PercentageDescription的财产作为字符串

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

我回答的问题很晚,我知道答案已经被接受。但在接受的答案中,您正在迭代数据绑定后的行,然后设置该值。

最好在DataBinding时间替换该值。它会超过gridview行迭代的额外开销。

您可以使用GridView的RowDataBound事件。这里是完整的代码..

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:无论如何非常感谢你。到目前为止,我从你身上学到了很多东西...... – thevan