Use item data bound event in datalist for such functionality. You can use a label variable or datakey to check the value for the conditional column depending on whether to show that column or not.
void Item_Bound(Object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
string strID = DataGrid1.DataKeys[e.Item.ItemIndex].ToString();
Panel toBeOrNotToBe = (Label)e.Item.FindControl("myPanel");
if(strID=="something")
}
}