Think I've figured out what was going on.
The ObjectDataSource markup contained this line:
<asp:ControlParameter DefaultValue="0" Name="clientId" Type="Int32"
ControlID="DDList1" PropertyName="SelectedValue" />
where DDList1 is actually a data driven UserControl I have created.
Replacing the line with:
<asp

arameter DefaultValue="0" Name="clientId" Type="Int32" />
and setting the value in the ObjectDataSource Selecting event:
protected void odsCatalogues_Selecting(object sender,
ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["clientId"] =
Convert.ToInt32(DDList1.SelectedValue);
}
meant that my DataList databinding was now not occurring twice.
Still not sure why this should be but this work around has fixed it.