Hi,
after i try the demo http://demos.telerik.com/aspnet-core/grid/custom-command.
I have an issue showing details data from foreignkey , if you confused what im talking about , here's my code to give you some insight.
View :
<
div
style
=
"padding:10px;"
>
@(Html.Kendo().Grid<
DevRedsMk3.Models.MasterOpportunity
>()
.Name("Opportunity")
.Columns(columns =>
{
columns.Bound(p => p.OpportunityId).Title("Opportunity ID");
columns.Bound(p => p.OpportunityName).Title("Opportunity Name");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "ProspectId").Hidden(true).Title("Prospect Id");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "ProspectName").Hidden(true).Title("Prospect Name");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "Type").Hidden(true).Title("Type");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "Email").Hidden(true).Title("Email");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "Phone").Hidden(true).Title("Phone");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "Address").Hidden(true).Title("Address");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "IdNumber").Hidden(true).Title("ID Number");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "ProspectId", "Npwp").Hidden(true).Title("NPWP");
columns.ForeignKey(p => p.ProspectId, (System.Collections.IEnumerable)ViewData["prospects"], "EmployeeId", "EmployeeId").Hidden(true).Title("Sales Person");
columns.Command(command => command.Custom("Details").Click("showDetails")).Width(100);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(185);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Scrollable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(datasource => datasource
.Ajax()
.ServerOperation(false)
.Model(model => { model.Id(p => p.OpportunityId);
model.Field(p => p.OpportunityId).Editable(false);
})
.Read(read => read.Action("CustomCommand3_Read", "MasterOpportunity"))
.Read(read => read.Action("List", "MasterOpportunity"))
.Create(create => create.Action("Create", "MasterOpportunity"))
.Update(update => update.Action("Update", "MasterOpportunity"))
)
)
@(Html.Kendo().Window().Name("Details")
.Title("Opportunity Details")
.Visible(false)
.Modal(true)
.Draggable(true)
.Width(600)
)
<
script
type
=
"text/x-kendo-template"
id
=
"template"
>
<
div
id
=
"details-container"
>
<
h2
>#= OpportunityName #</
h2
>
<
em
>#= OpportunityId #</
em
>
<
dl
>
<
dt
>Prospect ID: #= ProspectId #</
dt
>
@* <
dt
>Name: #= ProspectName #</
dt
>
<
dt
>Type: #= Type #</
dt
>
<
dt
>Email: #= Email #</
dt
>
<
dt
>Address: #= Address #</
dt
>
<
dt
>Phone : #= Phone #</
dt
>
<
dt
>KTP: #= IdNumber #</
dt
>
<
dt
>NPWP: #= Npwp #</
dt
>
<
dt
>Sales Person: #= EmployeeId#</
dt
>*@
</
dl
>
</
div
>
</
script
>
<
script
type
=
"text/javascript"
>
var detailsTemplate = kendo.template($("#template").html());
function showDetails(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var wnd = $("#Details").data("kendoWindow");
wnd.content(detailsTemplate(dataItem));
wnd.center().open();
}
</
script
>
</
div
>
you can see the commented code in <div id="details-container"> , im not able to show that, so please help me with it.. :)
here's my controller :
namespace
DevRedsMk3.Controllers
{
public
class
OpportunityController : Controller
{
private
readonly
dbdevredsContext _context;
public
OpportunityController(dbdevredsContext context)
{
_context = context;
}
// GET: /<controller>/
public
IActionResult Index()
{
var prospects = _context.MasterProspect.ToList();
ViewData[
"prospects"
] = prospects;
ViewData[
"defaultMasterProspect"
] = prospects.First();
var employee = _context.MasterEmployee.ToList();
ViewData[
"employee"
] = employee;
ViewData[
"defaultMasterEmployee"
] = employee.First();
return
View();
}
public
IActionResult Error()
{
return
View();
}
}
}
namespace DevRedsMk3.Controllers
{
public class MasterOpportunityController : Controller
{
private readonly dbdevredsContext _context;
public MasterOpportunityController(dbdevredsContext context)
{
_context = context;
}
public IActionResult List([DataSourceRequest] DataSourceRequest request)
{
return Json(_context.MasterOpportunity.ToDataSourceResult(request));
}
//public ActionResult CustomCommand3_Read([DataSourceRequest] DataSourceRequest request)
//{
// return Json(_context.MasterEmployee.ToDataSourceResult(request));
//}
[HttpPost]
public ActionResult Update([DataSourceRequest]DataSourceRequest request, Models.MasterOpportunity master)
{
if (master != null && ModelState.IsValid)
{
_context.MasterOpportunity.Update(master);
_context.SaveChanges();
}
return Json(new[] { master }.ToDataSourceResult(request, ModelState));
}
[HttpPost]
public ActionResult Destroy([DataSourceRequest]DataSourceRequest request, Models.MasterOpportunity opportunity)
{
_context.Remove(opportunity);
_context.SaveChanges();
return Json(new[] { opportunity }.ToDataSourceResult(request, ModelState));
}
[HttpPost]
public ActionResult Create([DataSourceRequest]DataSourceRequest request, Models.MasterOpportunity opportunity)
{
if (opportunity != null && ModelState.IsValid)
{
_context.Add(opportunity);
_context.SaveChanges();
}
return Json(new[] { opportunity }.ToDataSourceResult(request, ModelState));
}
}
}