2014-02-18 173 views
0

我有一個Kendo UI網格,有三列,第一列是複選框,另外兩列是文本。我遇到的問題是複選框渲染速度變慢。當網格呈現並且數據填充得非常快時,我必須等待幾秒鐘以使複選框呈現。而且我在等待,我可以看到,在複選框呈現之前,列中有數字。我正在考慮將其轉換,以便使用JavaScript代碼創建它,以查看它是否會更快。是否有人看到我的代碼會導致渲染速度變慢或性能改善,或者在javascript中執行操作會更快。Kendo Ui ASP網格渲染速度慢

<td id="typeGrid"> 
@(Html.Kendo().Grid(Model.TypeList) 
.Name("TypeList") 
.Columns(columns => 
{ 
    columns.Bound("myID").Sortable(false).Width("35px") 
    .ClientTemplate("<input type='checkbox' name='typeId' value=#=myID#>") 
    .Title("<input type='checkbox' onclick='checkAll(event)'>"); 
    columns.Bound("Name").Title("Name"); 
    columns.Bound("Type").Title("Type"); 
    })    
.Sortable()                
.Resizable(resize => resize.Columns(true)) 
.Selectable(select => select.Mode(GridSelectionMode.Multiple)) 
.DataSource(dataSource => dataSource 
     .Ajax() 
     .ServerOperation(false) 
    ) 
) 
</td> 

編輯

經檢驗接近我注意到,從模板輸入複選框未渲染,直到我的下拉框是渲染。在投遞箱被渲染之前,投遞箱渲染是否會導致模板不能被應用?他們都使用相同的對象。

<td id="PermType" style="vertical-align: top;"> 
    @(Html.Kendo().DropDownList() 
    .Name("theTypeList") 
    .DataTextField("Type Name") 
    .DataValueField("myTypeID")  
    .BindTo(Model.myTypeList)        ) 
</td> 

// the code above for the grid goes after this 

我的模型

public class myModel 
{  
    public List<subType> TypeList { get; set; } 
    public List<mainType> myTypeList { get; set; } 

    public class subType 
    { 
     public int myID { get; set; } 
     public string Name { get; set; }   
     public string Type { get; set; } 
     public int mainTypeID { get; set; } 

    } 

    public class mainType 
    {   
     public string myTypeID { get; set; } 
     //other property 

    } 

} 

回答

0

在你DataSource你設置Ajax的「方法」,但你傳遞一個對象到Grid。我認爲這可能會導致問題。

從評論

試着改變你的數據源,以這種編輯(我覺得語法可能有點過,但智能感知應該能夠幫助):

@(Html.Kendo().Grid(Model.TypeList) 
.Name("TypeList") 
.Columns(columns => 
{ 
    columns.Bound(x => x.myID).Sortable(false).Width("35px") 
    .ClientTemplate("<input type='checkbox' name='typeId' value='#=myID#'>") 
    .Title("<input type='checkbox' onclick='checkAll(event)'>"); 
    columns.Bound(x => x.Name).Title("Name"); 
    columns.Bound(x => x.Type).Title("Type"); 
    })    
.Sortable()                
.Resizable(resize => resize.Columns(true)) 
.Selectable(select => select.Mode(GridSelectionMode.Multiple)) 
.DataSource(dataSource => dataSource 
     .Model(mdl => mdl.Id(x => x.myID)) 
) 

我懷疑這是因爲我從來沒有用過Selectable()

+0

我試着將它改爲'Server()',並試圖完全刪除'DataSource',並且得到錯誤'沒有指定DataSource Model Id屬性。' –

+0

@JackThor我更新了一個想法的答案。 –

+0

對不起,我應該澄清一下,錯誤所指的模型Id不是我模型中的id,我模型中的id被稱爲別的東西,我只是爲了安全原因而將它改變。我修復了我的代碼以更好地反映這一點。數據源沒有'Model'。我也刪除了'Selectable()'沒有工作。但請看看我的編輯,我發現可能有用。 –