Проблема программной установки столбцов только для чтения в Telerik RadGrid - PullRequest
1 голос
/ 10 ноября 2009

Я пытаюсь динамически сделать некоторые столбцы доступными только для чтения во время выполнения, используя следующий код в моем обработчике Page_Load:

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

Однако приведенный выше код работает, только если столбец является последним столбцом в сетке. Если я попытаюсь со вторым до последнего или оставленными столбцами дальше, команда «Изменить» в строке больше не работает. Никаких исключений не выдается, и EditCommand срабатывает, но на этом вечеринка останавливается.

Я подозреваю, что, возможно, я изменяю сетку в неправильном месте в жизненном цикле страницы, но я действительно не хочу начинать искать правильное место методом проб и ошибок. Я связываю свою сетку, используя grid_NeedDataSource, а не загрузку страницы. Есть идеи?

Ответы [ 2 ]

1 голос
/ 18 мая 2011

это то, что я использую для ASP.NET MVC 3 Telerik Grid. У меня не было проблем с изменением порядка столбцов. Очевидно, я использую Razor View Engine. Надеюсь, это поможет.

  @(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()
  )
1 голос
/ 10 ноября 2009

Попробуйте установить состояние только для чтения в обработчике PreRender сетки. Я думаю, что это более подходящее место для этого. Подробнее о настройке столбцов здесь .

Dick

...