Problema establecer mediante programación columnas de sólo lectura en un Telerik RadGrid

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de hacer dinámicamente ciertas columnas de sólo lectura en tiempo de ejecución usando el siguiente código en mi manejador Load:

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

Sin embargo, el código anterior sólo funciona si la columna es la última columna de la cuadrícula. Si lo intento con la segunda a la última, o columnas más a la izquierda, el comando Editar en la fila ya no funciona. Sin excepción es lanzada, y los fuegos EditCommand, pero eso es donde el partido se detiene.

Sospecho que puedo ser la modificación de la red en el lugar equivocado en el ciclo de vida de la página, pero realmente no quiero empezar a buscar el lugar correcto por ensayo y error. Ato mi cuadrícula utilizando grid_NeedDataSource, no en carga de la página. ¿Alguna idea?

¿Fue útil?

Solución

Trate de establecer el estado de sólo lectura dentro del manejador PreRender de la parrilla. Creo que este es el lugar más apropiado para hacerlo. Más acerca de la personalización columnas aquí .

Dick

Otros consejos

Esto es lo que estoy usando para ASP.NET MVC 3 Telerik cuadrícula. No he tenido problemas para cambiar el orden de las columnas. Obviamente estoy usando el motor de vista de la maquinilla de afeitar. Espero que esto ayude.

  @(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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top