simple DataTable works in next way - if header not defined it adds default one with filtering input inside. So if you add header on your own you will see it's in the same place where it was.
But unfortunatelly it's not so for extendedDataTable component. It uses the same rule for deciding if need to use default one but it places default ones into special headers and user defined ones placed into common cells. So the problems like at that image will occurs(calendar - manually added filter control):
In order to have extenral filter control in the same place where built-in inputs does - use undocumented filterValueInput facet :
<f:facet name="filterValueInput"> <rich:calendar></rich:calendar> </f:facet>