or
@(Html.Kendo().ComboBoxFor(model => model.CountryId)
.Filter(FilterType.Contains)
.BindTo(ViewBag.Countries)
.HtmlAttributes(CommonHelpers.MergeHtmlAttributes(Html.GetUnobtrusiveValidationAttributes(
CommonHelpers.GetPropertyName(() => Model.CountryId)),
new Dictionary<
string
, object>(){
{ "class", "combobox-country" }})))
<
div
>
@(Html.Kendo().Grid(Model.UnitDetails)
.Name("Grid")
.DataSource(ds => ds
.Ajax()
.Read(read => read.Action("Index", "Home"))
)
.HtmlAttributes(new { style = "height:430px;" })
.Columns(columns =>
{
columns.Bound(p => p.UnitContract.Name).Title("Unit");
columns.Bound(p => p.UnitContract.CurrentRun.Operation.WellContract.Location).Title("Site");
columns.Bound(p => p.UnitContract.CurrentRun.Operation.WellContract.Name).Title("Well");
columns.Bound(p => p.UnitContract.CurrentRun.Id).Title("Run");
columns.Bound(p => p.UnitContract.CurrentRun.RunTask).Title("Task");
columns.Bound(p => p.UnitContract.CurrentRun.Operation.Description).Title("Operation");
columns.Bound(p => p.UnitContract.Status.StatusText).Title("Status");
columns.Bound(p => p.UnitContract.CurrentRun.LatestWellLogEntry.Depth).Title("Depth (m)");
columns.Bound(p => p.UnitContract.CurrentRun.LatestWellLogEntry.Speed).Title("Speed (m/min)");
columns.Bound(p => p.UnitContract.CurrentRun.LatestWellLogEntry.Tension).Title("Weight (kg)");
columns.Bound(p => p.UnitContract.CurrentRun.Name);
columns.Template(p => { }).ClientTemplate(" ").Width(75);
})
.ClientRowTemplate(Html.Partial("_ClientRowTemplate", Model).ToHtmlString())
.Pageable()
.Scrollable(builder => builder.Height(250))
.Sortable())
</
div
>
<
tr
>
<
td
>#: UnitContract.Name#
</
td
>
<
td
>#: UnitContract.CurrentRun.Operation.WellContract.Location#
</
td
>
<
td
>#: UnitContract.CurrentRun.Operation.WellContract.Name#
</
td
>
<
td
>#: UnitContract.CurrentRun.Id#
</
td
>
<
td
>#: UnitContract.CurrentRun.RunTask#
</
td
>
<
td
>#: StatusMessage#
</
td
>
<
td
class
=
'text-center'
>
<
span
class
=
'label label-#:StatusColor #'
style
=
'width: 25px;'
> </
span
>
</
td
>
<
td
>
<
div
>
@(Html.Kendo().Sparkline()
.Name("depth")
.Data(#: UnitContract.CurrentRun.LatestWellLogEntry.Speed#)
.Type(SparklineType.Bar)
.Tooltip(false)
.ValueAxis(axis => axis.Numeric().Max(5000).Min(-5000).Visible(false))
.CategoryAxis(c =>
c.MajorTicks(ticks => ticks.Visible(false))
.Visible(true))
.ChartArea(ca => ca.Background("transparent"))
.HtmlAttributes(new { style = "width: 75px;" }))
</
div
>
</
td
>
<
td
>
<
div
>
<!-- DataWiz Sparkline -->
</
div
>
</
td
>
<
td
>
<
div
>
<!-- DataWiz Sparkline -->
</
div
>
</
td
>
<
td
>#: UnitContract.CurrentRun.Name#
</
td
>
<
td
>
<
form
method
=
'POST'
action
=
'@Url.Content("~/UnitDetails/Index/")#: UnitContract.Id#'
>
<
input
type
=
'submit'
class
=
'k-button'
value
=
'Details'
/>
</
form
>
</
td
>
</
tr
>
@(Html.Kendo().Grid(Of KendoUIMvcApplication1.ViewModels.EmployeeViewModel).Name("Employees") _
.Columns(Sub(columns)
columns.Bound(Function(e) e.FirstName).Width(140)
columns.Bound(Function(e) e.LastName).Width(140)
columns.Bound(Function(e) e.Title).Width(200)
columns.Bound(Function(e) e.Country).Width(200)
columns.Bound(Function(e) e.City)
End Sub) _
.ClientDetailTemplateId("employeesTemplate") _
.Pageable() _
.DataSource(Sub(dataSource)
dataSource.Ajax().Read(Sub(read)
read.Action("HierarchyBinding_Employees", "Example")
End Sub)
dataSource.Ajax().PageSize(5)
End Sub) _
.Sortable() _
.Events(Sub(events)
events.DataBound("dataBound")
End Sub))
<
script
id
=
"employeesTemplate"
type
=
"text/kendo-tmpl"
>
@(Html.Kendo().Grid(Of KendoUIMvcApplication1.ViewModels.OrderViewModel).Name("Orders_#=EmployeeID#") _
.Columns(Sub(columns)
columns.Bound(Function(o) o.OrderID).Width(101)
columns.Bound(Function(o) o.ShipCountry).Width(140)
columns.Bound(Function(o) o.ShipAddress).Width(200)
columns.Bound(Function(o) o.ShipName).Width(200)
End Sub) _
.DataSource(Sub(dataSource)
dataSource.Ajax().Read(Sub(read)
read.Action("HierarchyBinding_Orders", "Example", New With {.employeeID = "#=EmployeeID#"})
End Sub)
End Sub) _
.Pageable() _
.Sortable() _
.ToClientTemplate())
</
script
>
<
script
>
function dataBound() {
this.expandRow(this.tbody.find("tr.k-master-row").first());
}
</
script
>
Imports System.Web.Mvc
Imports System.Linq
Imports System.Data.Linq
Imports Kendo.Mvc.Extensions
Imports Kendo.Mvc.UI
Public Class ExampleController
Inherits System.Web.Mvc.Controller
Public Function Hierarchy() As ActionResult
Return View()
End Function
Public Function HierarchyBinding_Employees(<
DataSourceRequest
> request As DataSourceRequest) As ActionResult
Return Json(GetEmployees().ToDataSourceResult(request))
End Function
Public Function HierarchyBinding_Orders(employeeID As Integer, <
DataSourceRequest
> request As DataSourceRequest) As ActionResult
Return Json(GetOrders().Where(Function(order) order.EmployeeID = employeeID).ToDataSourceResult(request))
End Function
Private Shared Function GetOrders() As IEnumerable(Of ViewModels.OrderViewModel)
Dim northwind = New NorthwindDataContext()
Dim loadOptions = New DataLoadOptions()
loadOptions.LoadWith(Of Order)(Function(o) o.Customer)
northwind.LoadOptions = loadOptions
Return northwind.Orders.[Select](Function(order) New ViewModels.OrderViewModel() With { _
.ContactName = order.Customer.ContactName, _
.OrderDate = order.OrderDate, _
.OrderID = order.OrderID, _
.ShipAddress = order.ShipAddress, _
.ShipCountry = order.ShipCountry, _
.ShipName = order.ShipName, _
.EmployeeID = order.EmployeeID _
})
End Function
Private Shared Function GetProducts() As IEnumerable(Of ViewModels.ProductViewModel)
Dim northwind = New NorthwindDataContext()
Return northwind.Products.[Select](Function(product) New ViewModels.ProductViewModel() With { _
.ProductID = product.ProductID, _
.ProductName = product.ProductName, _
.UnitPrice = If(product.UnitPrice, 0), _
.UnitsInStock = If(product.UnitsInStock, 0), _
.UnitsOnOrder = If(product.UnitsOnOrder, 0), _
.Discontinued = product.Discontinued, _
.LastSupply = DateTime.Today _
})
End Function
Private Shared Function GetEmployees() As IEnumerable(Of ViewModels.EmployeeViewModel)
Dim northwind = New NorthwindDataContext()
Return northwind.Employees.[Select](Function(employee) New ViewModels.EmployeeViewModel() With { _
.EmployeeID = employee.EmployeeID, _
.FirstName = employee.FirstName, _
.LastName = employee.LastName, _
.Country = employee.Country, _
.City = employee.City, _
.Notes = employee.Notes, _
.Title = employee.Title, _
.Address = employee.Address, _
.HomePhone = employee.HomePhone _
})
End Function
End Class