Well, I would suggest you to change js function code to apply array of checkboxes ids.
It can look something like this:
Example
<%@ Page Language="C#" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<script runat="server">
private static int counter = 1;
protected void AddCheckbox(object sender, AjaxEventArgs e)
{
string[] checkboxIds =
{
"NewCheckbox" + counter++,
"NewCheckbox" + counter++,
"NewCheckbox" + counter++
};
string jsonCheckboxIds = JSON.Serialize(checkboxIds);
ScriptManager.GetInstance(this.Context).AddScript("addCheckboxTo('{0}', '{1}')", "Group1", jsonCheckboxIds);
}
</script>
<!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 runat="server">
<title>Coolite 0.8.X Example</title>
<script type="text/javascript">
var counter = 1;
var addCheckboxTo = function(groupId, checkBoxIds) {
var group = Ext.getCmp(groupId),
cfg = group.initialConfig;
cfg.items = [];
checkBoxIds = eval(checkBoxIds);
for (var i = 0; i < checkBoxIds.length; i++) {
cfg.items.push({
id: checkBoxIds[i],
xtype: "checkbox",
inputValue: checkBoxIds[i],
boxLabel: checkBoxIds[i]
});
}
group.destroy();
new Ext.form.CheckboxGroup(cfg);
}
</script>
</head>
<body>
<form runat="server">
<ext:ScriptManager runat="server" />
<ext:CheckboxGroup ID="Group1" runat="server" ColumnsNumber="1">
<Items>
<ext:Checkbox runat="server" BoxLabel="Checkbox 1" />
<ext:Checkbox runat="server" BoxLabel="Checkbox 2" />
</Items>
</ext:CheckboxGroup>
<ext:Button runat="server" Text="Add checkbox">
<AjaxEvents>
<Click OnEvent="AddCheckbox" />
</AjaxEvents>
</ext:Button>
</form>
</body>
</html>