Telerik RadGrid에서 프로그래밍 방식으로 열을 읽기 전용으로 설정하는 데 문제가 있습니다.
문제
Page_Load 핸들러에서 다음 코드를 사용하여 런타임에 특정 열을 읽기 전용으로 동적으로 만들려고 합니다.
GridNumericColumn gncp = grid.MasterTableView.GetColumn("ActualProduction") as GridNumericColumn;
if (gncp != null)
{
gncp.ReadOnly = true;
}
그러나 위 코드는 해당 열이 그리드의 마지막 열인 경우에만 작동합니다.마지막에서 두 번째 또는 더 왼쪽에 있는 열을 사용하여 시도하면 해당 행의 편집 명령이 더 이상 작동하지 않습니다.예외는 발생하지 않고 EditCommand가 실행되지만 여기서 파티가 중지됩니다.
페이지 수명 주기의 잘못된 위치에서 그리드를 수정하고 있는 것 같지만 시행착오를 거쳐 올바른 위치를 찾기 시작하고 싶지는 않습니다.나는 다음을 사용하여 그리드를 바인딩합니다. grid_NeedDataSource
, 페이지 로드 중이 아닙니다.어떤 아이디어가 있나요?
해결책
그리드의 프레 렌더 핸들러 내부에서 Readonly 상태를 설정해보십시오. 나는 이것이 그렇게하기에 더 적절한 장소라고 생각합니다. 열 사용자 정의에 대한 자세한 내용 여기.
형사
다른 팁
이것이 제가 ASP.NET MVC 3 Telerik Grid에 사용하고 있는 것입니다.열 순서를 변경하는 데 문제가 없었습니다.분명히 저는 Razor 뷰 엔진을 사용하고 있습니다.이게 도움이 되길 바란다.
@(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()
)
제휴하지 않습니다 StackOverflow