Windows8 Skrevet 21. april 2009 Del Skrevet 21. april 2009 (endret) Sliter med en ASP.NET Calendar som lukkes når jeg trykker på "forrige/neste måned." Jeg vil da at den ikke skal lukkes, men bare lukkes når en velger dato. <script type="text/javascript"> var timeout = 300; var closetimer = 0; var dropdown = 0; function mopen(id) { mcancelclosetime(); if(dropdown) dropdown.style.visibility = 'hidden'; dropdown = document.getElementById(id); dropdown.style.visibility = 'visible'; } function mclose() { if(dropdown) dropdown.style.visibility = 'hidden'; } function mclosetime() { closetimer = window.setTimeout(mclose, timeout); } function mcancelclosetime() { if(closetimer) { window.clearTimeout(closetimer); closetimer = null; } } document.onclick = mclose; </script> <div id="drop"> <p href="#" onmouseover="mopen('1')" onmouseout="mclosetime()">Choose date</p> <div id="1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()"> <asp:Calendar ID="Calendar1" runat="server" BackColor="Red" ></asp:Calendar> </div> </div> Når lukket: Når åpnet: Endret 21. april 2009 av RePaC Lenke til kommentar
Rymored Skrevet 21. april 2009 Del Skrevet 21. april 2009 Jeg tror ikke et javascript klarer å skille mellom de ulike stedene å klikke på kalenderen, så når jeg hadde et lignende tilfelle valgte jeg å legge kalenderen i et updatepanel å kjøre postbacks ved klikk på dag og ved endring av måned. På den måten kunne jeg styre synlighet, tekstfeltverdien, osv. backend. Sikkert ikke den beste løsning om dette er noe alle brukere av nettsiden har tilgang på, men om det er snakk om et administrasjonsystem (CMS eller lignende) er det mer-enn-godt-nok. Lenke til kommentar
Windows8 Skrevet 21. april 2009 Forfatter Del Skrevet 21. april 2009 Da gjorde du det i AJAX? Lenke til kommentar
Rymored Skrevet 21. april 2009 Del Skrevet 21. april 2009 (endret) Japp, UpdatePanel er en AJAX-komponent. Når man benytter ASP.net 3.5 flyter disse komponentene veldig sammen med de vanlige, og bruken av de går lekende lett : ) Har lest litt om at slike partial-page-postbacks ved hjelp av updatepanels genereren en hel haug med data ved hver postback, slik at belastningen på serveren etterhvert kan blir stor. Det er derfor jeg nevnte dette med bruken: man skal være forsiktig med å bruke updatepanels på deler av nettsiden hvor det er stor trafikk. Dette er jo ikke tilfelle ved administrasjonssystemer eller andre type nettapplikasjoner hvor kun en utvalgt gruppe har tilgang til nettsiden. Edit: dobbelt-opp-med-ord : ) Endret 21. april 2009 av Rymored Lenke til kommentar
Windows8 Skrevet 21. april 2009 Forfatter Del Skrevet 21. april 2009 (endret) Har prøvd å sette inn AJAX komponenter først, fordi jeg tenkte dette er den letteste måten, men får typisk PreFix feilmelding: "This control cannot be displayed because its TagPrefix is not registered in this Web Form." Derfor registrerte jeg: <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="id" %> men den vil fortsatt ikke bruke controllen. Endret 21. april 2009 av RePaC Lenke til kommentar
Rymored Skrevet 21. april 2009 Del Skrevet 21. april 2009 (endret) Det er ikke nødvendig med en slik om du setter opp web.config-filen riktig. Legger ved et eksempel på en web.config-fil som blir automatisk generert i vs08 når man oppretter et nytt ASP.net 3.5-prosjekt. Når denne er på plass kan du benytte <asp:updatepanel> uten å tenke på noe ekstra registrering av assembly's på hver enkelt side. (jeg har da antatt at du benytter .net 3.5 ettersom du ikke kommenterte noe rundt det) Edit: husk forresten også at du trenger en <scriptmanager> på de sidene som benytter updatepanel's ! <?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> </sectionGroup> </sectionGroup> </sectionGroup> </configSections> <appSettings/> <connectionStrings/> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. --> <compilation debug="false"> <assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies> </compilation> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Windows" /> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <pages> <controls> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </controls> </pages> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> </system.web> <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="WarnAsError" value="false"/> </compiler> </compilers> </system.codedom> <!-- The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. --> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="ScriptModule" /> <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <remove name="ScriptHandlerFactory" /> <remove name="ScriptHandlerFactoryAppServices" /> <remove name="ScriptResource" /> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </handlers> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration> Endret 21. april 2009 av Rymored Lenke til kommentar
Windows8 Skrevet 21. april 2009 Forfatter Del Skrevet 21. april 2009 (endret) Jeg bruker .NET 3.5 og lager en ASP.NET Web Application. Så har webconfig fila, men vet du hvilke endringer som må til for å kunne bruke AJAX controllere? EDIT: trykkleif. Endret 21. april 2009 av RePaC Lenke til kommentar
Rymored Skrevet 21. april 2009 Del Skrevet 21. april 2009 Da skal det i utgangspunktet være nok å sette inn en ScriptManager for å få ting til å fungere. For å forsikte deg om at problemet ikke ligger på din lokale maskin kan det lønne seg å laste siden opp mot en server som støtter .net 3.5 og teste ting der. Legger ved et enkelt eksempel nedenfor så du forstår hva jeg mener: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="test2._Default" %> <!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></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:TextBox runat="server" ID="TextBox1" /> <asp:Button runat="server" ID="Button1" Text="Button" onclick="Button1_Click" /> </ContentTemplate> </asp:UpdatePanel> </div> </form> </body> </html> using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace test2 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { TextBox1.Text = DateTime.Now.ToString(); } } protected void Button1_Click(object sender, EventArgs e) { TextBox1.Text = DateTime.Now.ToString(); } } } Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå