or
public
static
IQueryable<TEntity> ApplyFiltering<TEntity>(
this
IQueryable<TEntity> queryable, IList<IFilterDescriptor> filters) where TEntity:
class
{
foreach
(var filter
in
filters.Cast<FilterDescriptor>()){
var pe = Expression.Parameter(
typeof
(TEntity),
"x"
);
var left = Expression.Property(pe,
typeof
(TEntity).GetProperty(filter.Member));
queryable = queryable.Search(Expression.Lambda<Func<TEntity,
object
>>(left,
new
ParameterExpression[] { pe }), filter.Value.ToString());
}
filters.Clear();
return
queryable;
}
//And controller code:
public
ActionResult Data_Read([DataSourceRequest] DataSourceRequest request)
{
var query = repository.GetQueryable();
query = query.ApplyFilters(request.Filters);
return
Json(query.ToDataSourceResult(request));
}
@model CustomFieldsGroup
@using (Html.BeginForm())
{
@Html.HiddenFor(x => x.GroupID)
@Html.HiddenFor(x => x.TypeID)
<
ul
>
<
li
>
@Html.LabelFor(x => x.GroupName)
</
li
>
<
li
>
@Html.EditorFor(x => x.GroupName)
</
li
>
</
ul
>
<
div
class
=
"edit-buttons"
>
<
a
class
=
"k-button k-button-icontext k-update-button"
href
=
"\\#"
><
span
class
=
"k-icon k-update"
></
span
>Save</
a
>
<
a
class
=
"k-button k-button-icontext k-cancel-button"
href
=
"\\#"
><
span
class
=
"k-icon k-cancel"
></
span
>Cancel</
a
>
</
div
>
}
<
div
class
=
"k-toolbar k-grid-toolbar"
>
<
a
id
=
"addRoleButton"
class
=
"k-button k-button-icontext k-add-button test"
href
=
"\\#"
><
span
class
=
"k-icon k-add"
></
span
>Add new group</
a
>
</
div
>
<
script
type
=
"text/x-kendo-tmpl"
id
=
"customFieldTemplate"
>
<
div
class
=
"product-view k-widget"
>
<
div
class
=
"edit-buttons"
>
<
a
class
=
"k-button k-button-icontext k-edit-button"
href
=
"\\#"
><
span
class
=
"k-icon k-edit"
></
span
></
a
>
<
a
class
=
"k-button k-button-icontext k-delete-button"
href
=
"\\#"
><
span
class
=
"k-icon k-delete"
></
span
></
a
>
</
div
>
<
div
>
Group Name
</
div
>
<
div
>
${GroupName}
</
div
>
@*<
dl
>
<
dt
>GroupName</
dt
>
<
dd
>${GroupName}</
dd
>
<
dt
>Unit Price</
dt
>
<
dd
>#:kendo.toString(UnitPrice, "c")#</
dd
>
<
dt
>Units In Stock</
dt
>
<
dd
>#:UnitsInStock#</
dd
>
<
dt
>Discontinued</
dt
>
<
dd
>#:Discontinued#</
dd
>
</
dl
>*@
</
div
>
</
script
>
<
div
class
=
"fields"
>
@(Html.Kendo().ListView<
CustomFieldsGroup
>(Model.Groups)
.Name("listView")
.ClientTemplateId("customFieldTemplate")
.TagName("div")
.DataSource(datasource =>
datasource.Model(model=>
{
model.Id(x => x.GroupID);
model.Field(x => x.TypeID).Editable(false);
model.Field(x => x.GroupName);
})
.Read(ac => ac.Action("Index_Read", "CustomFields"))
.Create(ac => ac.Action("CreateGroup", "CustomFields"))
.Update(ac => ac.Action("EditGroup", "CustomFields")))
.Editable())
)
</
div
>
<
script
>
$(function () {
var listView = $("#listView").data("kendoListView");
$(".test").bind("click", function (e) {
listView.add();
e.preventDefault();
})
})
</
script
>
@model IEnumerable<
TOPS.IQ.ViewModels.Administration.WebInfoVM
>
@(Html.Kendo().Grid<
TOPS.IQ.ViewModels.Administration.WebInfoVM
>(Model)
.Name("grid")
.HtmlAttributes(new { style = "height: 280px;" })
.DataSource(dataSource =>
dataSource.Ajax()
.Read(read => read.Action("EditingInlineWebInfo_Read", "Administration", new { id = Model.FirstOrDefault() == null ? 0 : Model.First().CommunityID }))
.Model(model => model.Id(m => m.WebInfoID))
.Create(update => update.Action("EditingInlineWebInfo_Create", "Administration"))
.Update(update => update.Action("EditingInlineWebInfo_Update", "Administration"))
.Destroy(update => update.Action("EditingInlineWebInfo_Destroy", "Administration"))
)
.Columns(columns =>
{
columns.Bound(p => p.WebInfoTypeName);
columns.Bound(p => p.Email);
columns.Bound(p => p.Description);
columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
})
.ToolBar(toolbar => toolbar.Create())
.Editable()
.Pageable()
.Sortable()
.Scrollable()
)
public
JsonResult EditingInlineWebInfo_Read([DataSourceRequest] DataSourceRequest request,
int
id)
{
//get the web infos for the given community
var webInfos = _service.FindAll<Community_Webaddress>().Where(c => c.CommunityID == id).Select(c => c.WebAddress);
var webInfosVM = webInfos.ConvertToWebInfoesVM();
return
Json(webInfosVM.ToDataSourceResult(request),JsonRequestBehavior.AllowGet);
}
[HttpPost]
public
ActionResult EditingInlineWebInfo_Create([DataSourceRequest] DataSourceRequest request, WebInfoVM webVM)
{
if
(webVM !=
null
&& ModelState.IsValid)
{
var webAddr = webVM.ConvertToWebAddress();
_service.Add<WebAddress>(webAddr);
var task = _service.SaveChangesAsync();
int
result = task.Result;
}
return
Json(
new
[] { webVM }.ToDataSourceResult(request, ModelState));
}
[HttpPost]
public
ActionResult EditingInlineWebInfo_Update([DataSourceRequest] DataSourceRequest request, WebInfoVM webVM)
{
if
(webVM !=
null
&& ModelState.IsValid)
{
var webAddr = webVM.ConvertToWebAddress();
var task = _service.SaveChangesAsync();
int
result = task.Result;
}
return
Json(
new
[] { webVM }.ToDataSourceResult(request, ModelState));
}
@(Html.Kendo().TabStrip()
.Name(
"SettingsTabStrip"
)
.Items(tabstrip =>
{
tabstrip.Add()
.Text(
"Phone"
)
.Selected(
true
)
.Content(@<text>
@(Html.Kendo().PanelBar()
.Name(
"IntroPanelBar"
)
.Items(panelItems =>
{
panelItems.Add()
.Text(
"OrtSettings"
)
.Selected(
true
)
.Expanded(
true
)
.Content(@<text>
<p style=
"padding:0 1em"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec egestas nisi at hendrerit molestie. Nunc sed lectus vel
enim accumsan faucibus ut vel erat. Quisque pharetra ante mi,
vitae volutpat odio tincidunt sed. Nam et elementum tellus.
Nunc non tellus nisi. Aliquam vitae est ut mi gravida cursus
ut
in
erat. Praesent eu sollicitudin dui.
</p>
</text>);
panelItems.Add()
.Text(
"UnitLogInfo"
)
.Content(@<text>
<p style=
"padding:0 1em"
>
Aliquam tincidunt luctus augue, vitae tempus tortor ultrices a.
Donec turpis lorem, tempor sed orci ut, volutpat sodales augue.
In egestas, tellus ac vestibulum pharetra, erat lectus facilisis
ligula, eu sollicitudin felis leo sed nibh. </p>
</text>);
})
)
</text>)
.ContentHtmlAttributes(
new
{ style =
"min-height: 200px"
});
tabstrip.Add()
.Text(
"Email"
)
.Content(@<text>
<p>
<span
class
=
"label"
>Support:</span>
<span><a href=
"mailto:Support@example.com"
>Support@example.com</a></span>
</p>
<p>
<span
class
=
"label"
>Marketing:</span>
<span><a href=
"mailto:Marketing@example.com"
>Marketing@example.com</a></span>
</p>
<p>
<span
class
=
"label"
>General:</span>
<span><a href=
"mailto:General@example.com"
>General@example.com</a></span>
</p>
</text>)
.ContentHtmlAttributes(
new
{ style =
"min-height: 200px"
});
tabstrip.Add()
.Text(
"Address"
)
.Content(@<text>
<p>
One Microsoft Way<br />
Redmond, WA 98052-6399
</p>
</text>)
.ContentHtmlAttributes(
new
{ style =
"min-height: 200px"
});
})
)