我在我的Page_Load处理程序中使用下面的代码试图动态让某些列只读在运行时:

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

然而,如果柱是在网格中的最后一列上面的代码才起作用。如果我有第二个尝试持续,或列进一步离开,在该行的编辑命令不再起作用。不会抛出异常,并且EditCommand火灾,但是这是党停止在那里。

我怀疑我可能会改变在页面生命周期错了地方电网,但我真的不想开始寻找通过试错了地方。我使用grid_NeedDataSource,而不是在页面加载绑定我的网格。任何想法?

有帮助吗?

解决方案

尝试设置网格的预渲染处理程序内的只读状态。我觉得这是更合适的地方来做到这一点。更多关于自定义列这里

迪克

其他提示

这是我使用的是什么ASP.NET MVC 3 Telerik的网格。我还没有改变列的顺序问题。很显然,我使用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()
  )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top