The DotNetNuke.Web.Mvp.ModuleViewBase sets a property called ‘AutoDataBind = true’. As a result the DataBind() method for the page is always called in the Page_PreRenderComplete event.
If you use the following familiar snippet of code you find that your controls will be data bound twice. Once when your code calls DataBind() and a second time when it is called during the Page_PreRenderComplete event.
ddlStatus.DataSource = Model.StatusList; ddlStatus.DataBind();
Here is an example of how to properly bind a DropDownList for an MVP based module.
<asp:DropDownList ID="ddlStatus" runat="server"
DataSource='<%#Model.StatusList%>'
DataTextField="Description"
DataValueField="Id" SelectedValue='<%#Model.Post.PostStatus %>'>
</asp:DropDownList>
It is important to point out again that you should not call ddlStatus.DataBind() from the code behind. Calling this is a waste because the AutoDataBind property is going to force everything to rebind again during Page_PreRenderComplete.