2012-03-21 88 views
0

我有一個基於搜索條件動態生成的網格。我使用Ajax在部分視圖中渲染網格。這一切都很好。動態生成Telerik MVC3網格 - 添加複選框

我現在需要添加一個複選框列作爲第一列。

此外,我如何獲得過濾,排序分頁等現在工作,因爲它是在局部視圖。 當我點擊頭排序我得到一個頁面未找到錯誤和過濾器圖標不做任何事情。

還有一件事。當我嘗試將GridCommandColumnSettings添加到網格中,我得到了錯誤 「無效的初始成員聲明」

代碼如下的gridcolumnsettings

public GridColumnSettings[] NewColumns(DataTable fullDT) 
    { 
     GridColumnSettings[] newColumns = new GridColumnSettings[fullDT.Columns.Count]; 

     for (int i = 0; i < fullDT.Columns.Count; i++) 
     { 
      // set the visibility property for the DeliveryID 
      bool boolDeliveryID; 
      if (fullDT.Columns[i].ColumnName == "DeliveryID") 
       boolDeliveryID = false; 
      else 
       boolDeliveryID = true; 

      newColumns[i] = new GridColumnSettings 
      { 
       new GridCommandColumnSettings 
       { 
        Commands = 
        { 
         new GridEditActionCommand(), 
         new GridDeleteActionCommand() 
        }, 
        Width = "200px", 
        Title = "Commands" 
       }, 
       Member = fullDT.Columns[i].ColumnName, 
       Title = fullDT.Columns[i].ColumnName, 
       Visible = boolDeliveryID, 
       Filterable = true, 
       Sortable = true 
      }; 
     } 
     return newColumns; 
    } 

任何建議,將不勝感激。

感謝

我編輯我的職務加我爲局部電網

Here is my partial for the grid 

@(Html.Telerik().Grid<System.Data.DataRow>(Model.Data.Rows.Cast<System.Data.DataRow>()) 
.Name("Grid") 
.Columns(columns => 
{ 
    columns.LoadSettings(Model.Columns as IEnumerable<GridColumnSettings>); 
}) 
.DataBinding(dataBinding =>  dataBinding.Ajax().Select("_DeliveryManagerCustomBinding", "Deliveries")) 
.EnableCustomBinding(true) 
.Resizable(resize => resize.Columns(true)) 

回答

1

我不加列這樣當我使用Telerik的網格控制,但看着在你正在做的事情上,我會冒險猜測你需要做如下的事情:

增加newColumns數組的大小1(因爲我們'再次要在複選框中添加列):

GridColumnSettings[] newColumns = new GridColumnSettings[fullDT.Columns.Count + 1]; 

如果你想在一開始,你需要做以下之前,你的for循環:

GridColumnSettings s = new GridColumnSettings() { 
    ClientTemplate("<input type=\"checkbox\" name=\"checkeditems\" value=\"some value\" />") 
    Title("title goes in here") 
}; 

然後,你將它添加到你的數組:

newColumns[0] = s; 

,然後增加開始索引你的for循環,以1:

for (int i = 1; i < fullDT.Columns.Count; i++) 

複選框列將在開始

+0

我試過你的例子,當網格試圖渲染時,我得到以下內容。 – Squeal 2012-04-11 20:47:32

+0

我在你的建議中擺弄得更多,並讓它起作用。 感謝您的幫助... – Squeal 2012-04-24 13:47:07