¿Cómo ordenar la columna DataGridView databound?

Sé que hay muchas preguntas sobre este tema. He pasado por todos ellos, pero nada parece ayudar.

¿Cómo ordenar haciendo clic en el encabezado de la columna?

¿Cómo debo modificar este código para hacer el trabajo?

public partial class Form1 : Form
{

    public Form1()
    {

        List<MyClass> list = new List<MyClass>();
        list.Add(new MyClass("Peter", 1202));
        list.Add(new MyClass("James", 292));
        list.Add(new MyClass("Bond", 23));

        BindingSource bs = new BindingSource();
        bs.DataSource = list;

        DataGridView dg = new DataGridView();

        DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn();
        c.Name = "name";
        c.DataPropertyName = "Name";
        dg.Columns.Add(c);

        c = new DataGridViewTextBoxColumn();
        c.Name = "number";
        c.DataPropertyName = "Number";
        dg.Columns.Add(c);

        dg.DataSource = bs;

        this.Controls.Add((Control)dg);

    }

}

class MyClass:IComparable<MyClass>
{
    public string Name { get; set; }
    public int Number { get; set; }

    public MyClass(){}

    public MyClass(string name,int number)
    {
        Name = name;
        Number = number;
    }

    public override string ToString()
    {
        return string.Format("{0}:{1}",Name,Number);
    }

    #region IComparable<MyClass> Members

    public int CompareTo(MyClass other)
    {
        return Name.CompareTo(other.Name);
    }

    #endregion
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta