1

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

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

但是,仅当列是网格中的最后一列时,上述代码才有效。如果我尝试使用倒数第二个或更左的列,则该行上的编辑命令不再起作用。不会抛出异常,并且 EditCommand 会触发,但这就是聚会停止的地方。

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

4

2 回答 2

1

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

迪克

于 2009-11-10T17:40:36.097 回答
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()
  )
于 2011-05-18T07:39:29.197 回答