To reproduce:
- Filer twice by a single column with Excel-like filtering.
- The second time InvalidCastException will occur.
Workaround:
- Create custom columns and override the GetDistinctValues method.
public class MyColumn : GridViewTextBoxColumn
{
    protected override GridViewColumnValuesCollection GetDistinctValues()
    {
        int index = this.Index;
        if (index >= 0)
        {
            GridViewColumnValuesCollection distinctValues = new GridViewColumnValuesCollection();
            foreach (GridViewRowInfo row in this.OwnerTemplate.Rows)
            {
               
                object cellValue = row.Cells[index].Value;
                if (!distinctValues.Contains(cellValue))
                {
                    distinctValues.Add(cellValue);
                }
            }
            if (distinctValues.Count > 0)
            {
                return distinctValues;
            }
        }
        return null;
    }
}