Question

Je suis en train de faire dynamiquement certaines colonnes en lecture seule lors de l'exécution en utilisant le code suivant dans mon gestionnaire Page_Load:

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

Cependant, le code ci-dessus ne fonctionne que si la colonne est la dernière colonne de la grille. Si je tente la deuxième à la dernière, ou des colonnes plus à gauche, la commande Modifier sur la ligne ne fonctionne plus. Aucune exception est levée, et les feux de EditCommand, mais c'est là le parti arrête.

Je pense que je peux être en train de modifier la grille au mauvais endroit dans le cycle de vie de la page, mais je ne veux pas commencer à chercher au bon endroit par essai et erreur. Je lie ma grille à l'aide grid_NeedDataSource, non chargement de la page. Toutes les idées?

Était-ce utile?

La solution

Essayez de définir l'état en lecture seule à l'intérieur du gestionnaire PreRender de la grille. Je pense que cela est endroit plus approprié de le faire. En savoir plus sur la personnalisation des colonnes .

Dick

Autres conseils

ce que je suis en utilisant pour ASP.NET MVC 3 Telerik Grille. Je n'ai pas eu des problèmes en changeant l'ordre des colonnes. Il est évident que j'utilise le moteur de vue Razor. J'espère que cela aide.

  @(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()
  )
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top