2013-04-17 54 views
1

下面的代碼僅適用於FileNo(字段)自動完成。我希望這個功能也適用於員工的其他屬性。即名字,姓氏kendoAutoComplete for multiple dataTextField

dataTextField:「FileNo」< ----------------這裏dataTextField獲取唱歌字段。怎麼會有多個領域?
enter image description here

enter image description here

回答

1

既然你是哪一列要搜索一個知道的人,我的建議是:

  1. 在能夠爲任何您想要的列進行搜索這樣的方式實現index.php/hr_management/manage_hr/search_employee/FileNoFirstNameLastName ...)。
  2. 此服務將返回三列(至少)提供id列名在其上找到匹配和匹配值
  3. 匹配值用於顯示autocomplete中的值。上autocomplete
  4. 一旦選定值中使用的列名匹配值用於在grid濾波。
2

您應該使用模板改變什麼顯示在自動完成的下拉列表。然後dataTextField將只在輸入元素中使用。

Here是如何去創建模板。

+0

謝謝,我試過了。它也很好,但是當我輸入FileNo時它會返回表格中的模板或其他細節。我想要的是用例如FirstName搜索相同的記錄。 –

+0

該模板僅用於設計dropdownlist的項目。問題在於如何通過組合字段獲取項目,而不是將其限制爲設置爲dataTextField的單個字段。看到我上面的答案。 – Yergalem

0

Kendo Autocomplete具有dataTextField,它接受用於過濾項目的字段名稱(例如,employeeID,employeeName等數據源)。

要使用多個字段,你必須在分析數據源的模式下面給出的設置中的一個字段持有級聯字段。 然後設置你的過濾自動完成對「包含

我做了如下。

var myDataSrc = new kendo.data.DataSource({  
        transport: { 
         read: { 
          type:"GET", 
          url:clientDataURL, 
          dataType: "jsonp", 
          contentType: "application/json", 
         }       
        }, 
         schema: { 
          parse: function(clntDB) { 
           $.each(clntDB, function(ky, clnt) { 
            clnt.firstName = clnt.clientUID + " | " + clnt.firstName+ " " + clnt.lastName; 

           }); 
           return clntDB; 
          } 
        }, 
        pageSize: 4 // Number of Items to show during input 
     }); 

///見的firstName上面它的重建,以保持級聯姓,名和姓字符串。

下一步是使用解析的firstName作爲kendo Autocomplete的dataTextField的值。

然後 var selectedClntID; ////事實上,這是爲了獲取ID爲將來使用

$("#YOURSEARCHINPUTID").kendoAutoComplete({ 
       dataSource: myDataSrc , 
       template: tmplSrchdClnt, // YOUR TEMPLATE like "<div>firstName</div>"    
       dataTextField:"firstName", 
       filter:"contains", /// DON'T FORGET TO ADD THIS 
       minLength : 1 , 
       select: function(e) { 
        var selectedClnt = this.dataItem(e.item.index()), 
         x = kendo.stringify(selectedClnt); 
         selectedClntID = JSON.parse(x); 


       } 
       // headerTemplate: '<div><h2>ID - LastName</h2></div>' 
     }); 

但是,很難找到資源表示這樣的,它的真棒,當你看到它working.This是我的項目的引擎,當涉及到自動完成。我這樣做了。

或者,也可以轉換爲

數據 =新員工(名字,姓氏,ID); //在客戶端

function Employee(firstname, lastname, ID){ 
    this.filterStr = firstname + ""+lastname+" "+ID; 
} 

數據到劍道自動完成數據源並使用filterStr作爲dataTextField。