2013-04-15 14 views
9

Czy ktoś był w stanie użyć metody setdatasource sieci Kendo UI? Sądzę, że jest to używane do przypisania źródła danych, które można przypisać do sieci na późniejszym etapie, a także do celów odświeżania sieci. Jednak nie mogłem znaleźć odpowiedniej dokumentacji wyjaśniającej, jak korzystać z tej metody i tworzyć odświeżaną siatkę.Jak korzystać z metody SetDataSource sieci Kendo UI

Próbuję zaktualizować moje źródło danych za pomocą zdalnego wywołania ajax. Zakładam też, że powinien on automatycznie odnawiać się, gdy źródło jest aktualizowane, ustawiając właściwość autosync na wartość true. Za każdym razem, gdy klikam kontrolkę kalendarza, przekazuję wartość daty do funkcji GetRemoteData, dzięki czemu dane są aktualizowane za pomocą żądania ajax.

To nie działa w tej chwili. Jakaś wskazówka co do tego rozwiązanie?

moim zdaniem

$('#calendarContainer').kendoCalendar({ 
     format: "dd/MM/yyyy", 
     culture: "en-GB", 
     change: onDateChange 
    }); 


function onDateChange() { 
     var selectedDate = kendo.toString(this.value(), 'dd/MM/yyyy'); 

     GetRemoteData(selectedDate); 
     /* 
     $("#grid").data("kendoGrid").dataSource.data(bob); 
     $("#grid").data("kendoGrid").dataSource.read(); 
     */ 
    } 



    $('#grid').kendoGrid({ 

      dataSource:GetRemoteData(date), 

      scrollable: { 
       virtual: true 
      }, 
      navigatable: true, 
      groupable: true, 
      sortable: true, 
      selectable: "row", 
      pageable: true, 

      pageable: { 
       input: true, 
       numeric: false 
      }, 

      resizable: true, 
      reorderable: true, 
      filterable: { 
       extra: false 
      }, 
      columns: [ 
       { 
        field: "DealNumber", 
        width: 150, 
        title: "DealNumber", 
        filterable: { 
         operators: { 
          string: { 
           startswith: "Starts With", 
           contains: "Contains" 
          } 
         } 

        }, 

       }, 
       { 
        field: "DealIssuer", 
        width: 150, 
        title: "Issuer", 
        filterable: { 
         operators: { 
          string: { 
           startswith: "Starts With", 
           contains: "Contains" 
          } 
         } 
        } 

       }, 
        { 
         field: "Ticker", 
         width: 150, 
         title: "Ticker", 
         filterable: { 
          operators: { 
           string: { 
            startswith: "Starts With", 
            contains: "Contains" 
           } 
          } 
         } 

        }, 
        { 
         field: "DealType", 
         width: 150, 
         title: "Type", 
         filterable: { 
          operators: { 
           string: { 
            startswith: "Starts With", 
            contains: "Contains" 
           } 
          } 
         } 

        }, 
         { 
          field: "DealValue", 
          width: 150, 
          title: "Value", 
          filterable: { 
           operators: { 
            string: { 
             startswith: "Starts With", 
             contains: "Contains" 
            } 
           } 
          } 

         }, 
          { 
           field: "DealStatus", 
           width: 150, 
           title: "Status", 
           filterable: { 
            operators: { 
             string: { 
              startswith: "Starts With", 
              contains: "Contains" 
             } 
            } 
           } 

          }, 
       { 
        field: "DealPricingCompletionDate", 
        width: 230, 
        title: "DealPricingCompletionDate", 
        format: "{0:dd/MM/yyyy}", 
        // template: '#= kendo.toString(StartDate, "dd/MM/yyyy") #', 
        filterable: { 
         ui: "datetimepicker", 
         operators: { 
          date: { 
           gt: "After", 
           lt: "Before", 
           eq: "Equals" 
          }, 
          messages: { 
           filter: "Apply", 
           clear: "Clear" 
          } 
         } 

        } 
       }, 

       { 
        command: { text: "View Details", click: showDetails }, title: " ", width: "140px" 
       }, 

      ], 
      editable: "popup", 
      height: 600 
     }).data("kendoGrid"); 






function GetRemoteData(date) { 

     var chosenDate; 


     if (typeof date == "undefined") { 
      chosenDate = "12-12-2013"; 
     } 
     else { 
      chosenDate = date; 
     } 

     var source = new kendo.data.DataSource({ 
      autoSync: true, 
      transport: { 
       read: { 
        type: "GET", 
        url: "http://localhost:35798/RestServiceImpl.svc/GetDealData", 
        dataType: "jsonp", 
        contentType: "application/json; charset=utf-8", 
        cache: false, 
       }, 

       parameterMap: function (data, type) { 

        var data = { 
         startDate: chosenDate 
        } 
        return data; 
       } 
      }, 
      schema: { 
       model: { 
        fields: { 
         DealNumber: { type: "string" }, 
         DealIssuer: { type: "string" }, 
         Ticker: { type: "string" }, 
         DealType: { type: "string" }, 
         DealValue: { type: "number" }, 
         DealStatus: { type: "string" }, 
         DealPricingCompletionDate: { type: "date" } 

        } 
       } 
      }, 
      pageSize: 16 
     }); 

     source.fetch(function() { 
      var data = this.data(); 
     }); 
     return source; 
    } 

Odpowiedz

15

Co próbowałeś do tej pory? To dość proste.

Przykład:

var ddl = $('#testDropDown').data("kendoDropDownList"); 
var otherDropDownList= $('#otherDropDown').data("kendoDropDownList"); 

var ds = new kendo.data.DataSource(); 
ds.data(otherDropDownList.dataSource.data()); // set new DataSource to otherDropDown's data source then filter it 
ds.filter(
    { 
     field: "Id", 
     operator: "eq", 
     value: parseInt(id) 
    } 
) 

ddl.setDataSource(ds); 

Oczywiście to wszystko będzie różny w zależności od tego scenariusza masz.

Aktualizacja dla siatki

var ds = new kendo.data.DataSource(); 
var grid = $('#grid').data("kendoGrid"); 

grid.setDataSource(ds); // sets to a blank dataSource 

Lub użyć tego źródła danych z innej sieci?

var gridDataSource = $('#grid').data("kendoGrid").dataSource; 
var secondGrid = $('#secondGrid').data("kendoGrid"); 

secondGrid.setDataSource(gridDataSource); 
+0

HI thedixon. Dziękuję za kod, ale próbuję zrobić to samo z Grid. Próbowałem wszystkich rodzajów opcji, ale żaden nie działał, dopóki nie natknąłem się na tę metodę o nazwie setDataSource. Czy byłbyś w stanie pokazać taki przykład dla Grid? Mogę opublikować mój kod, jeśli chcesz zobaczyć, gdzie może być odpowiedni. – Sike12

+0

Tak, jeśli mógłbyś opublikować swój aktualny kod i to, co próbujesz zrobić, byłoby świetnie. –

+0

Kod został już dołączony. – Sike12

5

Jeśli chcesz ustawić setDataSource Innym sposobem jest stworzenie źródła danych z obiektu zwróconego przez ajax żądanie jak wytłumaczyć w następujący LINK przez Brett

var dataSource = new kendo.data.DataSource({ 
    data: "your object returned by ajax" 
}); 

$('#GridKatildigiKurslar').data('kendoGrid').setDataSource(dataSource); 

Off Course siatka powinna być skonfigurowane, aby wyświetlać zwracany obiekt.

+0

Dziękujemy @freedeveloper – Sike12