更改DataTable列值

时间:2011-07-16 12:31:03

标签: c# asp.net gridview datatable

我有一个像这样的DataTable:

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

我想用一个GridView绑定这个DataTable。 但是在GridView中,我不想显示0.而不是Zero,我只想把那个单元格留空。如果包含零,我不想显示任何其他东西。 如何在DataTable中替换EmptyString而不是Zero?

3 个答案:

答案 0 :(得分: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  = "";
    }      
}
}

答案 1 :(得分:1)

您可以轻松地将名为PercentageDescription的属性添加为String

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

答案 2 :(得分:1)

以下GridView DataBound方法将循环遍历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 = "";
                    }
                }
            }
        }