2017-04-20 13 views
0

私は、剣道グリッドと、グリッドの選択された行のカスタムフォームを作成しました。 AngularJSを使用して、私は 'formData'変数に選択された行データを保存しました。 例大きなデータソースを持つ剣道

私の形で今
$scope.fromData = { uid: guid, id: guid, name: string, otherEntityId: guid } 

についてi 'はotherEntityId' のKendoDropDown入力を持っています。 dataTextFieldとdataValueFieldを使用して、私は他のデータソースを見て、外部キーに基づいて他のプロパティを表示したいと思います。例えば

 dataTextField: "Name", 
     dataValueField: "otherEntityId", 

私は と1つのエンティティ人持っている{ID:GUID、名前:文字列、cityId:GUID} そして {名:文字列、ID:GUID}を持つ別のエンティティの都市

最初のcityIdは2番目のエンティティIDと同じです。

私のフォームでは、最初のデータソースからのIDを持っています。私の入力では、idに基づいて名前を表示します。そのような 'look up'フィールド。

問題は、2番目のエンティティのデータソースが大きすぎるため、すぐに読み込むことができないということです。

私は、グリッド内の行のすべての選択のために、入力が

dataSource.filter = { field: dataValueField, operator: "eq", value: $scope.formDataItem[dataValueField] }; 

のようなデータソースにフィルターに要求を送信し、ユーザーは、私が欲しいドロップダウンリスト入力のより多くのオプションを見るためにクリックすると、仕組みが欲しいです'startswith'のような他のフィルタを持つようにする

dataSource.filter = { field: dataTextField, operator: "startswith", value: getInput().text() }; 

どうすればいいですか?オープンイベントでデータソースのフィルタを変更するにはどうすればよいですか?

答えて

0

私はフィルタリングイベントを使用します。だから私initiliaze値私はguidとデータソースフィルタにあるので、1つだけの項目を読み込むことができますときにフィルタリングイベントは、フィルタを変更し、うまく動作すると呼ばれる。

 $scope.options.filtering = function (e) { 

      e.preventDefault(); 
      if (prevText.length >= minLength) { 
       delete dataSource.filter; 
       dataSource.filter = { field: dataTextField, operator: "startswith", value: getInput()._prev}; 
       getInput().setDataSource(dataSource); 
      } 
      else 
       getInput().setDataSource({ data: [] }); 

    } 
関連する問題