OK, putting an update panel on the page took care of the exception. However, there are still another bug here.
I beefed up my original sample code (below) by adding an <asp:DropDownList> to provide a comparison between its operation and the operation of my composite control, which is really nothing more than a wrapper around an <asp:DropDownList> (of course, it started it's life out as something much more but I've stripped it way down to demonstrate the issue).
Here's what I'm observing:
1) first time page loads: when you change the selected item in the <asp:DropDownList>, you 'see' the page postback (page flickers/status bar's progress bar appears). Any new selection you make in this dropdown postsback the page as expected, and the SelectedIndexChanged event fires.
2) Now select an item in the dropdown list from the composite control. You don't 'see' the page postback, although I've verified all page events through render fire successfully. Selecting an item in this list should mimic the <asp:DropDownList> behavior, but doesn't.
Also, you get a javascript error 'dataPanelRendering has no properties'. Error occurs on line #11300 of Atlas.js:
deltaPanelRendering = Sys.UI._unescapeCData(deltaPanelRendering.firstChild.nodeValue);
3) Now select a different item in the <asp:Dropdown> list. You no longer see the page posting back, nor do any page events or the SelectedIndexChanged event fire on this dropdown list.
Both lists are broken for good until you refresh.
Here's the page source you can use to reproduce this (and use the composite control source from my first post):
<%@ Page Language="c#" %>
<%@ Register TagPrefix="MyWebControls" Namespace="MyWebControls" Assembly="MyWebControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>
<script runat="server">
protected void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack)
{
ArrayList a = new ArrayList();
a.Add("a");
a.Add("b");
a.Add("c");
country.DataSource = a;
country.DataBind();
drpTest.DataSource = a;
drpTest.DataBind();
}
}
</script>
<body>
<form id="form2" runat="server">
<atlas:ScriptManager ID="scriptManager1" runat="server" EnablePartialRendering="true">
</atlas:ScriptManager>
<div style="width: 550px">
<MyWebControls:DropInputField ID="DropInputField1" runat="server" AutoPostBack="True" />
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" />
</div>
<atlas:UpdatePanel ID="UpdatePanel1" runat="server" Visible="false">
<ContentTemplate>
</ContentTemplate>
</atlas:UpdatePanel>
</form>
</body>
</html>