Redundant DataContext ? - LINQ to SQL
I can't make a thorough review right now, but here's a quick fix that should help you structure things up.

What you have is probably working, but you're mixing-up presentation with data concerns. I don't think these methods should be returning void. Picture this:

protected IEnumerable&lt;SalesInfo&gt; LoadSales()
{
    using (var db = new StoreDataClassesDataContext())
    {
        var result = db.Sales.Select(s =&gt; new SalesInfo { 
                                                SaleId = s.SaleID,
                                                SaleDate = s.SaleDate,
                                                Total = s.Total })
                             .ToList();
        return result;
    }
}


What you get is a bunch of SalesInfo objects that contain your query results. Bind that to your UI instead.

It's probably normal you're re-creating the context everytime, you want these things to be as short-lived as possible.