none
Usercontrol mit jquery timepicker RRS feed

  • Frage

  • Hallo,

    ich möchte in ein Usercontrol den Timepicker (Link)  einbauen. 

    Wenn ich bei dem Control id="TimeInput" das Attribut runat="server" hinzufüge, werden die Javascripts nicht mehr ausgeführt. Das runat brauche ich weil ich serverseitig die Zeit setzen will. Ohne runat in TimeInput funktioniert es.

    Hier ist der Code:

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="uhrzeit.ascx.cs" Inherits="usercontrols.uhrzeit" %>
       <script type="text/javascript">
          $(function () {
             $('#TimeInput').timepicker({ 'timeFormat': 'H:i' });
          });
       </script>
    <input id="TimeInput" type="text" class="time"/>

    Die Page_Load Methode:

    protected void Page_Load(object sender, EventArgs e)
          {
             LiteralControl jsResource = new LiteralControl();
             jsResource.Text = "<script type=\"text/javascript\" src=\"../../jquery/timepicker/jquery.min.js\"></script>";
             Page.Header.Controls.Add(jsResource);
             
             jsResource = new LiteralControl();
             jsResource.Text = "<script type=\"text/javascript\" src=\"../../jquery/timepicker/jquery.timepicker.js\"></script>";
             Page.Header.Controls.Add(jsResource);
    
             HtmlLink stylesLink = new HtmlLink();
             stylesLink.Attributes["rel"] = "stylesheet";
             stylesLink.Attributes["type"] = "text/css";
             stylesLink.Href = "../../jquery/timepicker/jquery.timepicker.css";
             Page.Header.Controls.Add(stylesLink);
    
             stylesLink = new HtmlLink();
             stylesLink.Attributes["rel"] = "stylesheet";
             stylesLink.Attributes["type"] = "text/css";
             stylesLink.Href = "../../jquery/timepicker/site.css";
             Page.Header.Controls.Add(stylesLink);
          }

    Habt Ihr eine Idee. Ich sehe das Problem / die Lösung nicht.

    Danke

    Andreas



    • Bearbeitet AndreasM85 Sonntag, 13. Juli 2014 18:18
    Sonntag, 13. Juli 2014 18:17

Antworten

  • Hallo Andreas,

    durch runat="server" erhält das Control auf dem Client eine ID im Stil von "ctl00_TimeInput". Das kannst Du umgehen, indem Du zusätzlich ClientIdMode="Static" im Control angibst, also bspw. so:

    <input id="TimeInput" type="text" class="time" runat="server" clientidmode="Static" />

    oder:

    <asp:TextBox id="TimeInput" runat="server" CssClass="time" ClientIdMode="Static" />


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert AndreasM85 Sonntag, 13. Juli 2014 18:43
    Sonntag, 13. Juli 2014 18:27
    Moderator

Alle Antworten

  • Hallo Andreas,

    durch runat="server" erhält das Control auf dem Client eine ID im Stil von "ctl00_TimeInput". Das kannst Du umgehen, indem Du zusätzlich ClientIdMode="Static" im Control angibst, also bspw. so:

    <input id="TimeInput" type="text" class="time" runat="server" clientidmode="Static" />

    oder:

    <asp:TextBox id="TimeInput" runat="server" CssClass="time" ClientIdMode="Static" />


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert AndreasM85 Sonntag, 13. Juli 2014 18:43
    Sonntag, 13. Juli 2014 18:27
    Moderator
  • Hallo Stefan,

    vielen Dank für die schnelle Antwort. Es funktioniert. Die Theorie dazu muss ich mir nach dem Fußballspiel anschauen ;-)

    Gruß

    Andreas

    Sonntag, 13. Juli 2014 18:44