2014-03-27 63 views
1

我有一個項目,這是我沒有開發的。項目技術:ASP.NET MVC,jQuery,Bootstrap和KendoUI。 而且,它有一個小問題。KendoComboBox正常自動完成行爲不工作時,數據綁定訂閱

KendoComboBox在輸入時使用JSON數據源文本自動補全文本。太棒了! 但是,如果您訂閱DataBound事件來處理它,則此自動完成功能無法正常工作。它會擦除您輸入的內容。這引起用戶的一些憤怒。

該窗口與創建新Resgister以及編輯某些現有註冊... 因此,訂閱的DataBound可以在編輯時選擇ComboBox中的一個項目。

而且,如果我們正在創建一個新組件,那麼ComboBox的正常行爲在輸入時必須自動完成。

這是新窗口。自動完成不適用於DataBound訂閱: Create a New One - I want autocomplete ON

這是編輯窗口(相同,但是,加載)。 Edit a selected one - Works with DataBound

如果我刪除了數據綁定,ComboBox的自動完成正常工作: AutoComplete working

這是我的HTML:

<div class="k-field"> 
    <div class="k-fieldlabel">Responsável:</div> 
    <div style="float: left; width: calc(100% - 100px);"> 
     <input type="text" id="cboResponsavel" name="Responsavel.Id" style="width: 100%;" required validationmessage="Responsável é obrigatório" /> 
    </div> 
</div> 

在我的document.ready功能我:

$("#cboResponsavel").kendoComboBox({ 
dataTextField: "Nome", 
dataValueField: "Id", 
dataSource: { 
    type: "json", 
    schema: { 
     data: "data", 
     total: "total" 
    }, 
    transport: { 
     read: { 
      url: "/Projeto/Projetos/CarregarResponsaveis", 
      dataType: "json" 
     } 
    }  
}, 
filter: "contains", 
suggest: true, 
dataBound:function(e){ 
    e.sender.value(@(Model == null ? "null" : Model.Responsavel.Id.ToString())) 
} 
}); 

我的研究:

KendoCombobox is not fetching Localsource jsondata

Kendo UI Demos - ComboBox/Basic Usage

Kendo UI Docs - ComboBox - Events - DataBound

KendoUI and json

kendo ui: how to remove a dataItem of a dataSource bound to some comboBox, inside combobox dataBound event

Selecting item in databound combobox

我看了一些帖子我也是Kendo UI Fórum

我已經更新了jQuery和KendoUI和仍然存在......

我非常新的KendoUI和我剛剛修正了一些ASP.NET MVC的項目,所以,我不知道如何解決這個問題問題現在。請,如果有人能幫助或給我一個方向,我會很感激。

哦,是的,我想解決其他連擊同樣的問題...

P.S:如果我選擇它的值點擊,我可以在這裏工作,但這不是生產力。

我希望我讓自己清楚。感謝您的任何幫助。

+1

你說,如果你刪除'dataBound'它可以正常工作,但是你是否嘗試把它留在那裏,但是空的?你檢查了生成的JS代碼是什麼(我的意思是,驗證'e.sender.value ...'看起來像你期望的那樣。試着調用dataBound中的'e.sender.value(「some literal」)''並看看是否有效 – OnaBai

回答

3

找到了這個錯誤!

的解決方案是太白癡的我...哈哈

我們,其實,並不需要該事件。

這裏是不相同的代碼:

$("#cboResponsavel").kendoComboBox({ 
dataTextField: "Nome", 
dataValueField: "Id", 
dataSource: { 
    type: "json", 
    schema: { 
     data: "data", 
     total: "total" 
    }, 
    transport: { 
     read: { 
      url: "/Projeto/Projetos/CarregarResponsaveis", 
      dataType: "json" 
     } 
    } 
}, 
filter: "contains", 
suggest: true, 
value: @(Model == null ? "null" : Model.Responsavel.Id.ToString()) 
}); 

的行爲換新工作的罰款和它帶給我在編輯模式下的值。

Onabai發表的評論有助於發現DataBound事件不是問題,而是試圖設置它的Value。

解決方案是更改DataBound的值,它工作正常!

希望這可以幫助別人(即使這很簡單)。

+0

非常感謝你的隊友!我剛剛遇到同樣的問題,我仍然認爲dataBound也可以工作,因爲數據只在客戶端綁定一次。每次激活組合框,而且我發現它似乎也可以運行dataBound,但前提是你很快就會將文本輸入到組合框中。 –