ASP.NET MVC Kendo 使用弹出窗口添加新的网格
ASP.NET MVC Kendo Grid Add New using Popup
我将使用 ASP.NET MVC Kendo 网格创建一个网页来管理我的用户。当我单击 Kendo 网格中的添加新按钮时,没有任何反应,该按钮不起作用。我该如何解决这个问题?
这是我的 UserViewModel class:
public class UserViewModel
{
public int Id { get; set; }
public string Name { get; set; }
[ScriptIgnore]
public byte[] Photo { get; set; }
public string Photo64
{
get
{
return Photo != null ? Convert.ToBase64String(Photo) : null;
}
}
public bool Leave { get; set; }
}
这是我的读取和创建操作:
public ActionResult Users_Read([DataSourceRequest]DataSourceRequest request)
{
using (var db = new DBEntities())
{
var users = from u in db.Users
select new UserViewModel
{
Id = u.Id,
Name = u.Name,
Photo = u.Photo,
Leave = u.Leave ?? false
};
DataSourceResult result = users.ToDataSourceResult(request);
return Json(result);
}
}
public ActionResult Users_Create([DataSourceRequest]DataSourceRequest request, UserViewModel user)
{
if (ModelState.IsValid)
{
using (var db = new DBEntities())
{
var entity = new User
{
Name = user.Name
Photo = user.Photo,
Leave = user.Leave
};
db.Users.Add(entity);
db.SaveChanges();
user.Id = entity.Id;
}
}
return Json(new[] { user }.ToDataSourceResult(request, ModelState));
}
这是我的观点:
@(Html.Kendo().Grid<MyApp.Models.User>()
.Name("grid")
.Columns(c =>
{
c.Bound(u => u.Id).Visible(false);
c.Bound(u => u.Photo).ClientTemplate(
"# if (Photo64 == null) { #" +
"<img src='" + Url.Content("~/Images/") + "no_profile_photo.jpg' />" +
"# } else { #" +
"<img src='data:image/jpg;base64,#=Photo64#' />" +
"# } #"
);
c.Bound(u => u.Name);
c.Bound(u => u.Leave).ClientTemplate(
"<input type='checkbox' onclick='return false' value='#= Id #' " +
"# if (Leave) { #" +
"checked='checked'" +
"# } #" +
"/>"
);
c.Command(cmd => { cmd.Edit(); cmd.Destroy(); });
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.DataSource(dataSource => dataSource
.Ajax()
.Model(m =>
{
m.Id(user => user.Id);
m.Field(user => user.Name);
m.Field(user => user.Photo);
m.Field(user => user.Leave);
})
.Create(create => create.Action("Users_Create", "User"))
.Read(read => read.Action("Users_Read", "User"))
.Update(update => update.Action("Users_Update", "User"))
.Destroy(destroy => destroy.Action("Users_Destroy", "User"))
)
.Pageable()
.Sortable()
.Filterable()
)
您的 Users_Read 方法 returns 类型为 UserViewModel 的 kendo 数据源,但随后网格被定义为导致错误的类型 Grid .
我将使用 ASP.NET MVC Kendo 网格创建一个网页来管理我的用户。当我单击 Kendo 网格中的添加新按钮时,没有任何反应,该按钮不起作用。我该如何解决这个问题?
这是我的 UserViewModel class:
public class UserViewModel
{
public int Id { get; set; }
public string Name { get; set; }
[ScriptIgnore]
public byte[] Photo { get; set; }
public string Photo64
{
get
{
return Photo != null ? Convert.ToBase64String(Photo) : null;
}
}
public bool Leave { get; set; }
}
这是我的读取和创建操作:
public ActionResult Users_Read([DataSourceRequest]DataSourceRequest request)
{
using (var db = new DBEntities())
{
var users = from u in db.Users
select new UserViewModel
{
Id = u.Id,
Name = u.Name,
Photo = u.Photo,
Leave = u.Leave ?? false
};
DataSourceResult result = users.ToDataSourceResult(request);
return Json(result);
}
}
public ActionResult Users_Create([DataSourceRequest]DataSourceRequest request, UserViewModel user)
{
if (ModelState.IsValid)
{
using (var db = new DBEntities())
{
var entity = new User
{
Name = user.Name
Photo = user.Photo,
Leave = user.Leave
};
db.Users.Add(entity);
db.SaveChanges();
user.Id = entity.Id;
}
}
return Json(new[] { user }.ToDataSourceResult(request, ModelState));
}
这是我的观点:
@(Html.Kendo().Grid<MyApp.Models.User>()
.Name("grid")
.Columns(c =>
{
c.Bound(u => u.Id).Visible(false);
c.Bound(u => u.Photo).ClientTemplate(
"# if (Photo64 == null) { #" +
"<img src='" + Url.Content("~/Images/") + "no_profile_photo.jpg' />" +
"# } else { #" +
"<img src='data:image/jpg;base64,#=Photo64#' />" +
"# } #"
);
c.Bound(u => u.Name);
c.Bound(u => u.Leave).ClientTemplate(
"<input type='checkbox' onclick='return false' value='#= Id #' " +
"# if (Leave) { #" +
"checked='checked'" +
"# } #" +
"/>"
);
c.Command(cmd => { cmd.Edit(); cmd.Destroy(); });
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.DataSource(dataSource => dataSource
.Ajax()
.Model(m =>
{
m.Id(user => user.Id);
m.Field(user => user.Name);
m.Field(user => user.Photo);
m.Field(user => user.Leave);
})
.Create(create => create.Action("Users_Create", "User"))
.Read(read => read.Action("Users_Read", "User"))
.Update(update => update.Action("Users_Update", "User"))
.Destroy(destroy => destroy.Action("Users_Destroy", "User"))
)
.Pageable()
.Sortable()
.Filterable()
)
您的 Users_Read 方法 returns 类型为 UserViewModel 的 kendo 数据源,但随后网格被定义为导致错误的类型 Grid