pühapäev, 17. detsember 2017

SQL SERVER CLR serialization assembly

Kui juhtub, et SQL SERVER-i veebiteenuse poole pöörduv CLR hakkab pilduma viga

Cannot load dynamically generated serialization assembly. In some hosting environments assembly load functionality is restricted, consider using pre-generated serializer. Please see inner exception for more information.  System.IO.FileLoadException: LoadFrom(), LoadFile(), Load(byte[]) and LoadModule() have been disabled by the host

Siis soovitatakse luua selle DLL jaoks ka Serialization assembly. Selleks tuleb antud projekt
VisualStudio 2015 kõigepealt signeerida



Serializer dll tegemiseks kasutab sgen.exe käsurida

sgen /force /compiler:/keyfile:c:\Campus\KampusPdfInvoice\KampusPFDInvoice.snk KampusPdfInvoice.dll

tulemusena tekib KampusPdfInvoice.XmlSerializers.dll fail, mis
tuleb andmebaasi sisse lugeda peale originaal DLL sisselugemist, ehk kõigepealt

CREATE ASSEMBLY [KampusPdfInvoice] ..

ja siis

CREATE ASSEMBLY [KampusPdfInvoice.XmlSerializers] ...




neljapäev, 23. veebruar 2017

Ekraanikattega akna sulgemine ESC klahvivajutusega

Üllataval kombel ei leidnud selleks lihtsat lahendust, tuleb Javascriptiga jännata

Visuaalselt näeb välja nii, et klikid kugugi ja avaneb ekraaninkattega aken.



Kasutame ModalPopupExtender-it mille ees näitab UserControli sisu
<asp:Label runat="server" ID="HForModal" style="display: none" />
<asp:Panel runat="server" ID="P1" ScrollBars="Auto" Wrap="true"  Width="80%" CssClass="modalPopup">
    <asp:Button ID="ButtonModalClose" ClientIDMode="Static" runat="server" CausesValidation="False" CssClass="actionButton" Text="<%$ Resources:resource, ButtonClose %>" />&nbsp;
    <uc3:BoxNeibhours ID="BoxNeibhours1" runat="server" kuupaevNahtav="false"/>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender runat="server" ID="ModalPopupExtender1" X="120" BackgroundCssClass="moduleBackground" TargetControlID="HForModal" OkControlID="ButtonModalClose"
        CancelControlID="ButtonModalClose" PopupControlID="P1" BehaviorID="HForModal">
</ajaxToolkit:ModalPopupExtender> 

Kui nüüd see ekraanikattega aken avaneb, tahaks teda ESC klahviga sulgeda, aga ei kao ta ühtegi

CancelControlID ei mõju ESC klahvile, ehk JavaSript appi


 if (!Page.ClientScript.IsClientScriptIncludeRegistered("onKeyEsc"))
            {
                string url = ResolveClientUrl("~/Scripts/SulgeModal.js");
                Page.ClientScript.RegisterClientScriptInclude("onKeyEsc", url);
            }



JavaSript ise SulgeModal.js selline

function pageLoad(sender, args) {
        if (!args.get_isPartialLoad()) {
            //  adding handler to the document's keydown event
            $addHandler(document, "keydown", onKeyDown);
        }
    }
function onKeyDown(e) {
    if (e && e.keyCode == Sys.UI.Key.esc) {
        // if the key pressed is the escape key, then close the dialog
        //alert("close");
        var bname = document.getElementById("ButtonModalClose");  //ClientIDMode="Static"      
        if (bname !== null)
        {
            bname.click();
        }
        //PageMethods.SulgeAken(); //ei tööta
    }
}

Tähele tuleb panna seda kohta JavaScriptis

document.getElementById("ButtonModalClose")

vastav Button tuleb ClientIDMode="Static" defineerida

asp:Button ID="ButtonModalClose" ClientIDMode="Static"