2009-11-10 51 views
1

我在我的Page_Load处理程序中使用下面的代码试图动态让某些列只读在运行时:问题编程设置列为只读对Telerik的radgrid控件

   GridNumericColumn gncp = grid.MasterTableView.GetColumn("ActualProduction") as GridNumericColumn; 
       if (gncp != null) 
       { 
        gncp.ReadOnly = true; 
       } 

然而,上面的代码只能如果该列是网格中的最后一列。如果我试着倒数第二,或进一步离开的列,行上的编辑命令不再起作用。没有异常抛出,EditCommand触发,但这是派对停止的地方。

我怀疑我可能会在页面生命周期的错误位置修改网格,但我真的不想通过反复试验来寻找正确的位置。我使用grid_NeedDataSource绑定我的网格,而不是页面加载。有任何想法吗?

回答

1

尝试设置网格的PreRender处理程序中的只读状态。我认为这是更合适的地方。更多关于专栏定制here

迪克

1

这就是我用于ASP.NET MVC 3 Telerik Grid。我没有改变列的顺序的问题。很显然,我正在使用Razor视图引擎。我希望这有帮助。

@(Html.Telerik().Grid(Model) 
    .Name("catGrid") 
    .DataKeys(k => k.Add(o => o.cat_id)) 
    .Columns(columns => 
    { 
     columns.Bound(m => m.cat_id).ReadOnly(true).Visible(false); 
     columns.Bound(m => m.tenant_id).ReadOnly(true).Visible(false); 
     columns.Bound(m => m.date_added).ReadOnly(true).Visible(false); 
     columns.Bound(m => m.category_name).Title("Category Name").Width(350); 
     columns.Bound(m => m.status_cd).Title("Status").Width(150); 
     columns.Command(c => 
     { 
      c.Edit(); 
      c.Delete(); 
     }).Width(250); 
    }) 
    .DataBinding(b => b.Ajax() 
     .Select("AjaxGridSelect", "Category") 
     .Insert("GridInsert", "Category") 
     .Update("GridUpdate", "Category") 
     .Delete("GridDelete", "Category") 
    ) 
    .ToolBar(t => 
    { 
     t.Insert(); 
    }) 
    .Pageable(paging => paging.PageSize(20) 
     .Style(GridPagerStyles.NextPreviousAndDropDown) 
     .Position(GridPagerPosition.Both) 
    ) 
    .Sortable() 
    .Filterable() 
) 
相关问题