用Expression还要跟数据类型匹配,麻烦.还是在绑定事件中直接替换方便.
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{if (e.Item.ItemType!=ListItemType.Header && e.Item.ItemType!=ListItemType.Footer)
{
if(e.Item.Cells[5].Text)=="aaa")
{e.Item.Cells[5].Text=""}
}
}

解决方案 »

  1.   

    对不起,我说的是WIN FORM的,不是WEB的.
    我在WIN FORM的DATAGRID里面,没有找到ITEMDATABOUND事件.而且WIN FORM的DATAGRID是没有ITEM这个集合属性的.请知道的高手指点一二!
      

  2.   

    自己写一个继承自DataGridTextBoxColumn的类,重写Paint方法
      

  3.   

    To:langmafeng(乞力马扎罗)
        老大,你一定没有看清楚我的要求,我只是想实现一个IF....THEN....ELSE的功能,你让我继承类重写方法.不要吧!
      

  4.   

    设计数据库时给列设约束。排除表里Birthday字段的9999-12-31或者0001-01-01的日期
      

  5.   

    我试了一下,发现一点问题:是不是说,BIRTHDAY字段在做EXPRESSION的时候,不能用BIRTHDAY做为条件来判断?也就是说下面这句话是有问题的:
    ds.Tables[0].Columns["Birthday"].Expression = "IIF( Birthday = '9999-12-31', null ,'2004-01-01')";不知道我说的对不对.如果我说的正确的话,那么怎么样才能实现这个功能呢?
      

  6.   

    DataGrid的ItemDataBound事件里写
    e.Item.Cells[3].Text = e.Item.Cells[3].Text == "9999-12-31" || e.Item.Cells[3].Text == "0001-01-01" ? "" : e.Item.Cells[3].Text;用这个表达式可实现
      

  7.   

    没看清你的题目,你是在WinForm中。
    是否可考虑在Sql语句中解决
    用Case实现这是Oracle的语法。
    select (case birthday when "9999-12-31" then "" when "0001-01-01" then "" else birthday end) birthday from table
      

  8.   

    .Expression = "IIF ((not isnull(Birthday)) and (Birthday <= datavalue('9999-12-31') and (Birthday >= datavalue('0001-01-01'))), null , Birthday)";
      

  9.   

    To cqdyh:
        dataTable.Columns["Birthday"].Expression 是不能对自己这一列做替换的.