用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=""}
}
}
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=""}
}
}
我在WIN FORM的DATAGRID里面,没有找到ITEMDATABOUND事件.而且WIN FORM的DATAGRID是没有ITEM这个集合属性的.请知道的高手指点一二!
老大,你一定没有看清楚我的要求,我只是想实现一个IF....THEN....ELSE的功能,你让我继承类重写方法.不要吧!
ds.Tables[0].Columns["Birthday"].Expression = "IIF( Birthday = '9999-12-31', null ,'2004-01-01')";不知道我说的对不对.如果我说的正确的话,那么怎么样才能实现这个功能呢?
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;用这个表达式可实现
是否可考虑在Sql语句中解决
用Case实现这是Oracle的语法。
select (case birthday when "9999-12-31" then "" when "0001-01-01" then "" else birthday end) birthday from table
dataTable.Columns["Birthday"].Expression 是不能对自己这一列做替换的.