PDA

View Full Version : ایجاد Grid با Kendo و پیام خطا در Jason



spicirmkh
چهارشنبه 07 آبان 1393, 16:17 عصر
سلام
من یک کد نوشتم موقع اجرا این پیام خطا میدهد

An exception of type 'System.InvalidOperationException' occurred in System.Web.Extensions.dll but was not handled in user code
Additional information: A circular reference was detected while serializing an object of type 'System.Data.Entity.DynamicProxies.Member

خط برنامه به این صورت است

کنترل :



public ActionResult Gmember()
{
MemberRepository blMember = new MemberRepository();
var model = blMember.Select();
return View(model);
}

public ActionResult Member_Read([DataSourceRequest] DataSourceRequest request)
{
MemberRepository blMember = new MemberRepository();
var model = blMember.Select();

DataSourceResult result = model.ToDataSourceResult(request);
return Json(result);
}





و توی View



@model IEnumerable<Eshop.Models.DomainModels.Member>



@(Html.Kendo().Grid(Model)
.Name("Grid")
.Pageable()


.Columns(columns =>
{
columns.Bound(p => p.Family);
columns.Bound(p => p.Name);

})

.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Member_Read", "Home"))
)
)




لازم بذکر است من Json و MVC 5.2 را به روز کردم

با تشکر

meisam12
چهارشنبه 07 آبان 1393, 18:56 عصر
توی Model احتمالاً vitual property داری شما باید از ViewModel بدون این virtual propertyها استفاده کنید.

mehdin69
چهارشنبه 07 آبان 1393, 20:23 عصر
یه سر به لینک زیر بزن
http://barnamenevis.org/showthread.php?474028-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF-kendo-%D8%AA%D9%88%D8%B3%D8%B7-AjaxBinfing&

spicirmkh
پنج شنبه 08 آبان 1393, 11:46 صبح
یه سر به لینک زیر بزن
http://barnamenevis.org/showthread.php?474028-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF-kendo-%D8%AA%D9%88%D8%B3%D8%B7-AjaxBinfing&

من یک سری به لینک شما زدم برنامه بر اساس آن نوشتم متاسفانه Grid خالی است و هچ وفت برنامه سراغ 2 تا تابع نمی رود شکل در چیست
برنامه ببینید




namespace Eshop.ViewModels.Admin
{
public class MemberViewModel
{
public int MemberID { get; set; }
public string Name { get; set; }
public int Family { get; set; }
}
}




public ActionResult Gmember()
{
return View();
}


public ActionResult IndexData([DataSourceRequest]DataSourceRequest request)
{
return Json(GetData().ToDataSourceResult(request));
}



private static IEnumerable<MemberViewModel> GetData()
{
var db = new Eshop.Models.DomainModels.EshopEntities();

return (from contractor in db.Member
select new MemberViewModel()
{
MemberID = contractor.MemberID,
Name = contractor.Name
});
}






@(Html.Kendo().Grid<Eshop.ViewModels.Admin.MemberViewModel>()
.Name("Grid")

.Name("grid_Contractor")

.Columns(columns =>
{
columns.Bound(p => p.Family)
.ClientFooterTemplate("Total Count: #=count#")
.ClientGroupFooterTemplate("Count: #=count#");
})

.Groupable()
.Sortable(sort => sort.SortMode(GridSortMode.MultipleColumn))
.Scrollable(scroll => scroll
.Enabled(true)
.Height(450)
)
.Filterable()
.Selectable(selectable => selectable.Mode(GridSelectionMode.Multiple))
.Resizable(resize => resize.Columns(true))
.Pageable(page => page.ButtonCount(20)
.Info(true)
.Refresh(true)
.PageSizes(true)
.Numeric(true)
.PreviousNext(true)
.Input(true)
)
.Events(e => e.DataBound("onRowBound"))
.HtmlAttributes(new { style = "height:450px;" })
.RowAction(row => row.HtmlAttributes.Add("data-id", row.DataItem.MemberID))
.DataSource(dataSource => dataSource
.Ajax()
.Aggregates(aggregates =>
{
aggregates.Add(p => p.Name).Min().Max().Count();
//aggregates.Add(p => p.UnitsOnOrder).Average();
//aggregates.Add(p => p.ProductName).Count();
//aggregates.Add(p => p.UnitPrice).Sum();
})
.PageSize(20)
.Read(read => read.Action("IndexData", "Home"))
)
.ColumnMenu()
)


و وقتی روی family برای sort کلید میکنم همه رکورد به این صورت میاورد یا زمانی که رفرش میکنم



"Data":[{"MemberID":1,"Name":"Ali","Family":0},{"MemberID":2,"Name":"Morteza","Family":0},{"MemberID":3,"Name":"hamidreza","Family":0},{"MemberID":4,"Name":"hasan","Family":0},{"MemberID":5,"Name":"saeed","Family":0},{"MemberID":6,"Name":"mohamad","Family":0},{"MemberID":7,"Name":"zakaria","Family":0},{"MemberID":8,"Name":"ahang","Family":0},{"MemberID":9,"Name":"shahrnaz","Family":0},


فکر کنم برنامه ای مثل ایجکس نصب نیست
با تشکر

mehdin69
پنج شنبه 08 آبان 1393, 19:00 عصر
Ajax چیزی نیست که بخواد نصب بشه
شما توی تابع زیر که Family رو Select نکردی


private static IEnumerable<MemberViewModel> GetData()
{
var db = new Eshop.Models.DomainModels.EshopEntities();

return (from contractor in db.Member
select new MemberViewModel()
{
MemberID = contractor.MemberID,
Name = contractor.Name
});

}



Family هم Select کن درست میشه
یا بیا توی Grid این خط رو بکن .Name



.Columns(columns => {

columns.Bound(p => p.Family)



بکن


.Columns(columns => {

columns.Bound(p => p.Name)