Ok so I hacked a solution together that works (in FireFox, Safari, and Chrome):
.aspx page
<div id="notificationValidationSummary" class="x-hidden">
<ext:Panel ID="Panel2" runat="server" Border="false" BodyStyle="background-color:transparent;">
<Body>
<ext:FitLayout ID="fpnlNotificationValidationSummary" runat="server">
<ext:Panel ID="pnlNotificationValidationSummary" runat="server" Border="false" BodyStyle="padding:2px;text-align:left;background-color:transparent;"
AutoHeight="True">
<Body>
<asp:ValidationSummary ID="vsSbnInfo" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="SbnInfo" />
<asp:ValidationSummary ID="vsGetSbnInfo" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="GetSbnInfo" />
<asp:ValidationSummary ID="vsGetReplacedByInformation" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="GetReplacedByInformation" />
<asp:ValidationSummary ID="vsReplacedByInformation" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="ReplacedByInformation" />
<asp:ValidationSummary ID="vsInitalSave" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="InitalSave" />
<asp:ValidationSummary ID="vsApprovals" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="Approvals" />
<asp:ValidationSummary ID="vsAbbComplete" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="ABBComplete" />
<asp:ValidationSummary ID="vsDcComplete" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="DcComplete" />
<asp:ValidationSummary ID="vsPsComplete" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px;" ValidationGroup="PsComplete" />
<PCCNet:ValidationSummaryPlus ID="vsGeneralErrors" runat="server" OnPreRender="genericValidationSummary_PreRender"
Style="position: relative; top: 0px; left: 0px; margin-top: 0px;" ValidationGroup="" />
</Body>
</ext:Panel>
</ext:FitLayout>
</Body>
</ext:Panel>
In the .cs file for the page:
protected void Page_PreRender(object sender, EventArgs e)
{
Page.Validate("nonexistantvalidation"); //Force a validation event on a non-existant validation group.
// we only want to display this if the page is not valid.
if (Page.IsPostBack && Page.IsAsyncPostBack() && Page.IsAsync && !Page.IsValid)
{
WindowListeners listeners = new WindowListeners();
listeners.BeforeRender.Handler = "this.setHeight(#{fpnlNotificationValidationSummary}.height + 50, null); this.setWidth(#{fpnlNotificationValidationSummary}.width, null); ";
Notification.Config config = new Notification.Config();
config.PinEvent = "none";
config.ContentEl = "notificationValidationSummary";
config.AutoHide = false;
config.Title = "<strong>The following problem(s) need to be addressed:</strong>";
config.Closable = false;
config.Draggable = true;
config.Pinned = false;
config.Resizable = true;
config.Icon = Icon.Cancel;
config.Listeners = listeners;
Ext.Notification.Show(config);
}
}
I am not sure if this the best way to do this but it seems to work (except on IE but my users will not be using it so I don't really care).
Now if only the panel would stay in the bottom right-hand corner of the screen when scrolling...