2017-12-06 1 views
1

In meinem Projekt gibt es viele Mitarbeiter, jeder von ihnen hat seinen eigenen Zeitplan pro Woche, ich habe einen Web-Service implementiert, der eine Liste von ganzen Zahlen zurückgibt was die Arbeitstage für den angegebenen Angestellten darstellt, ist die Hauptidee für all das, dass ich verhindern muss, dass Benutzer Termine in den anderen Wochentagen machen. Wie man diese Tage vor der Datumsauswahl versteckt? oder wenn es einen anderen Weg gibt, dies zu tun?Wie Tage der Woche in Datumsauswahl deaktivieren basierend auf Antwort von Web-Service

Webservice

[WebMethod] 

    public void getWorkDays(int id) 
    { 
     WorkDays wd = new WorkDays(id); 

     List<Days> workDays = new List<Days>(); 
     String docSch_query = "select * from workDays where empId = " + id + " and status=1"; 
     DBConnect conn = new DBConnect(); 
     DataTable dt = conn.select(docSch_query); 

     foreach (DataRow r in dt.Rows) 
     { 
      switch (r["dayId"].ToString()) 
      { 
       case "1": 
        workDays.Add(new Days(1,"sat")); 
        break; 
       case "2": 
        workDays.Add(new Days(2, "sun")); 
        break; 
       case "3": 
        workDays.Add(new Days(3, "mon")); 
        break; 
       case "4": 
        workDays.Add(new Days(4, "tus")); 
        break; 
       case "5": 
        workDays.Add(new Days(5, "wed")); 
        break; 
       case "6": 
        workDays.Add(new Days(6, "thu")); 
        break; 
      } 
     } 

     JavaScriptSerializer js = new JavaScriptSerializer(); 
     Context.Response.Write(js.Serialize(workDays));   
    } 

Datumsauswahl

$(document).ready(function() { 

     var dates=$.ajax({ 
      type: "POST", 
      url: "getdays.asmx/getWorkDays", 
      data: {id:<%#int.Parse(Session["appWith"].ToString())%>}, 
      dataType: "json", 

      success: function (data) { 

       return data.d; 
      } 
     }); 

     $('#edob').datepicker({ 

      firstDay: 3, 
      beforeShowDay: function (date) { 
       var available = $.inArray(date.getDay(), dates['int']) > -1; 

       if (available) { 
        return [1]; //return available date 
       } 
       else { 
        return [0]; //return not available 
       } 
      } 
     }); 
    }) 

Antwort

0

ich die Lösung für meine Frage gefunden ..

$(document).ready(function() { 
     var dates = $.parseJSON(
      $.ajax({ 
       type: "POST", 
       url: "getdays.asmx/getWorkDays", 
       data: { id: <%=int.Parse(Session["appWith"].ToString())%> }, 
       dataType: "json", 
       async: false 
      }).responseText); 

     $('#edob').datepicker({ 

      firstDay: 3, 
      beforeShowDay: function (date) { 
       var a =[]; 
       var weekend = false; 
       for (i = 0; i < dates.length; i++) { 
        a.push(dates[i].Id); 
       } 
       var weekend = date.getDay() == 5 || date.getDay() == 6 || !($.inArray(date.getDay(),a)>-1); 
       return [!weekend, weekend ? 'myweekend' : '']; 
      } 
     }); 
    });