簡體   English   中英

Kendo UI MVC網格-干擾列模板的數據源

[英]Kendo UI MVC Grid - DataSource Interfering With Column Template

我有一個Kendo UI MVC Helper網格,它與模板列有關。 我的問題是,我不想使用服務器端調用進行過濾或排序。 當我禁用服務器端數據源時,我的模板不會為“名稱”列呈現。 這是我的代碼:

@(Html.Kendo().Grid(Model.Contacts)
    .Name("contactGrid")
    .Columns(c =>
    {
        c.Bound(p => p.Name).Title("Contact Name").Template(@<text><a href="/contact-details/@item.Id" target="_blank">@item.Name</a></text>);
        c.Bound(p => p.Id).Title("Unique ID");
    })
    .Sortable(s => s.SortMode(GridSortMode.SingleColumn).AllowUnsort(true))
    .Scrollable(s => s.Height(430))
    .Filterable(f => f.Extra(false).Operators(o => o.ForString(s => s.Contains("Contains"))))
    .DataSource(d => d.Ajax().ServerOperation(false))
)

如果我像這樣注釋掉數據源:

//.DataSource(d => d.Ajax().ServerOperation(false))

那么該模板就可以在“名稱”列上正常工作,但是該頁面會進行回發,這對於網格而言是過大的。 如果我不對其進行注釋,則“名稱”列中的所有單元格均呈現為純文本(不存在錨標記),但是我具有客戶端排序和過濾功能。

我需要更改什么以允許“名稱”列上的模板並進行客戶端排序和過濾?

.DataSource(d => d.Ajax().ServerOperation(false))

推斷您的網格將通過ajax遠程加載其數據,但是您在初始化的一開始就為網格提供了數據(Model.Contacts):

@(Html.Kendo().Grid(Model.Contacts)

通過從一開始就將Model.Contacts加載到網格中,該網格被視為服務器綁定 ,而通過提供該數據源,您的網格將被視為ajax綁定

根據Kendo文檔,Ajax綁定的網格無法利用服務器模板 ,這就是您考慮使用的name列模板。

如果Model.Contacts確實包含您需要加載的所有數據,那么我將完全刪除數據源,因為您擁有所需的所有數據。

如果您確實想通過ajax加載數據,則應刪除Model.Contacts並初始化網格,如下所示:

 @(Html.Kendo().Grid<Contact>()

並添加配置了讀取傳輸方法的數據源。

查看Kendo Grid常見問題解答的這一部分(第二個問題向下):

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/faq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM