My daughter used to get constipated a lot. For a little while, we were having to use a glycerin suppository about once a month (she was constipated much more than this, but we didn't want her to become dependent on something to be able to "go"). You can get them at the drugstore and they usually soften things up some to be able to be passed easier. We tried changing around her diet too help with the constipation as much as possible. Watch out for certain foods that can cause constipation like: dairy(which I see you already noted), bananas, one site I've seen says cooked carrots too but I've never noticed a problem with those.
Increase his fiber. Some good sources of fiber(copying and pasting some things here): Raw, unpeeled fruits and vegetables (especially beans, sweet potatoes, peas, turnip greens, raw tomatoes and corn) have the most fiber. Give enough grams of fiber to equal their age in years plus 5 each day (check the nutritional label for high fiber foods and snacks with at least 3-4g of fiber per serving). Vegetable soups are especially high in fiber and also add more fluid to your child's diet. Increase bran in your child's diet by offering bran cereals, bran muffins, shredded wheat, graham crackers, or whole wheat bread.