Problema de configuração programaticamente colunas para somente leitura em um telelerik radgrid

StackOverflow https://stackoverflow.com/questions/1708982

  •  19-09-2019
  •  | 
  •  

Pergunta

Estou tentando fazer com que certas colunas dinamicamente lante -se em tempo de execução usando o seguinte código no meu manipulador de página_load:

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

No entanto, o código acima funciona apenas se a coluna for a última coluna na grade. Se eu tentar com o segundo para durar, ou as colunas à esquerda, o comando de edição na linha não funciona mais. Nenhuma exceção é lançada e o EditCommand dispara, mas é aí que a festa para.

Suspeito que possa estar modificando a grade no lugar errado no ciclo de vida da página, mas realmente não quero começar a procurar o lugar certo por tentativa e erro. Eu amarro minha grade usando grid_NeedDataSource, não está no carregamento da página. Alguma ideia?

Foi útil?

Solução

Tente definir o status de leitura dentro do manipulador de pré -render da grade. Eu acho que este é um lugar mais apropriado para fazer isso. Mais sobre a personalização das colunas aqui.

Dick

Outras dicas

É isso que estou usando para o ASP.NET MVC 3 Telerik Grid. Não tive problemas para mudar a ordem das colunas. Obviamente, estou usando o mecanismo de exibição de barbear. Eu espero que isso ajude.

  @(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()
  )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top