ASP.MVC, Kendo 및 OpenAccess를 사용하여 응용 프로그램을 개발하고 있습니다.사용자 지정 부분 부분 클래스
특정 엔터티에 대한 사용자 지정 속성을 만든 후에 데이터 소스와 Grid에 바인딩하지 못했습니다.
부분 클래스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ErpMvc.OpenAccess
{
public partial class Customer
{
public string CustomProperty
{
get
{
return "My Custom Property Text";
}
}
}
}
서비스
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ErpMvc.OpenAccess;
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
namespace ErpMvc.Services
{
public class CustomerService
{
public static IEnumerable<Customer> GetCustomers()
{
var dbContext = new EntitiesModel();
return dbContext.Customers.Select(customer => new Customer
{
CustomerID = customer.CustomerID,
FirstName = customer.FirstName,
CustomProperty = customer.CustomProperty
});
}
}
}
보기
@model IEnumerable<ErpMvc.OpenAccess.Customer>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@(Html.Kendo().Grid(Model)
.Name("Customers")
.Columns(columns =>
{
columns.Bound(c => c.FirstName).Title("First Name");
columns.Bound(c => c.CustomProperty).Title("Custom Property");
})
.Pageable()
.Sortable()
.Editable(editable => editable.Mode(GridEditMode.InLine))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(customerID => customerID.CustomerID))
.Read(read => read.Action("Customers_Read", "Customer"))
.Update(update => update.Action("Customers_Update", "Customer"))
.PageSize(50)
)
)
컨트롤러
public ActionResult Customers_Read([DataSourceRequest] DataSourceRequest request)
{
return Json(CustomerService.GetCustomers().ToDataSourceResult(request));
}
오류 메시지가 나는 할당 할 수 없습니다 VS
건물 또는 인덱서 'CustomProperty'에서 받고 있어요 - 내 CustomProperty에 "{} 설정"정의 된 후에는
읽기, 이 오류 메시지는 해결되었지만 다른 하나를 얻었습니다.
(...) 'CustomProperty'가 속성 인 경우 FieldAlias 또는 Storage 특성을 필드에 추가하거나 필드의 별칭으로 선언하십시오.
내 실수를 발견하고 도움을 주신 것에 대해 매우 감사합니다. 가장 좋은 친구;) –
@Nicholas에 의해 게시 된 응답을 ToDataSourceResult() 필터링 및 페이징 적용됩니다 잊고 있습니다 .ToDataSourceResult 호출하기 전에 GetCustomers 호출하면 모든 행을 반환합니다 기본 쿼리로 데이터를 칠 것입니다. (10000 레코드를 말하십시오)! –
@MadaniBenghia 네, 그게 맞아요, 나는 단지 그것을 작동시키는 방법을 보여줬습니다. 내 대답을 업데이트했습니다. – Nicholas