Problème colonnes réglage par programme en lecture seule sur un Telerik RadGrid
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?
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()
)