You create an composite control which contains a DataList as child control. See details of creating such in one of Justin Lovell's articles:
http://aspalliance.com/359
Then just expose the template properties (ITemplate type) of DataList out from your control.
Here's an article about templates:
http://aspalliance.com/366
If you don't associate an ITemplate from aspx (declaratively), you can do such by loading template from user control file (ascx) by using Page.LoadTemplate or just instantianting an class implementing ITemplate interface and associate that with the property. Note that for the composite control (containing the DataList) the implementation follows pretty much same pattern as with any completely custom templated control (things happen in same place, in CreateChildControls and so on), just instead of instantiating template yourself, you pass it to the DataList.
Thanks,
Teemu Keiski
Finland, EU