or
@(Html.Kendo().Grid(Model.TrackAndTraceTypeList)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(item => item.CustomerLevel).Title("Customer<
br
/>Level").Width(80);
columns.Bound(item => item.TrackAndTraceTypeId).Title("T&T<
br
/>Type Id").Width(80);
columns.Bound(item => item.TrackAndTraceTypeName).Title("T&T Type<
br
/>Name");
columns.Bound(item => item.Level).Title("Level").Width(60);
columns.Bound(item => item.Description).Title("Description");
columns.Bound(item => item.MTC).Title("MTC").Width(60);
columns.Bound(item => item.Failure).Title("Failure").Width(80);
columns.Bound(item => item.Success).Title("Success").Width(80);
columns.Bound(item => item.Multiple).Title("Multiple").Width(80);
columns.Bound(item => item.Photo).Title("Photo").Width(60);;
columns.Bound(item => item.MessageTypeId).Title("Msg<
br
/>Type Id").Width(80);
})
.ToolBar(toolbar =>
{
toolbar.Template(@<
text
>
<
div
class
=
"k-toolbar k-grid-toolbar k-grid-top"
>
<
table
style
=
"width:400px"
>
<
tr
>
<
td
>
<
a
class
=
"k-button k-button-icontext k-grid-save-changes"
href
=
"javascript:void(0)"
>
<
span
class
=
"k-icon k-update"
></
span
>Save changes
</
a
>
<
a
class
=
"k-button k-button-icontext k-grid-cancel-changes"
href
=
"javascript:void(0)"
>
<
span
class
=
"k-icon k-cancel"
></
span
>Cancel changes
</
a
>
</
td
>
<
td
>
<
label
class
=
"category-label"
for
=
"category"
>Version No:
<
input
id
=
"txtVersionNumber"
type
=
"text"
style
=
"width: 80px"
/>
</
label
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
text
>);
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Groupable()
.Pageable(page => page.PageSizes(new int[] { 10, 20, 30, 50 }))
.Sortable()
.Filterable()
.Selectable(s => s.Mode(GridSelectionMode.Single))
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model => {
model.Id(ttt => ttt.TrackAndTraceTypeId);
model.Field(ttt => ttt.TrackAndTraceTypeId).Editable(false);
model.Field(ttt => ttt.TrackAndTraceTypeName).Editable(false);
model.Field(ttt => ttt.CustomerLevel).Editable(false);
model.Field(ttt => ttt.Level).Editable(false);
model.Field(ttt => ttt.MessageTypeId).Editable(false);
})
.PageSize(20)
.Read(read => read.Action("TrackAndTrace_Read", "Customers"))
.Update(update => update
.Action("TrackAndTrace_Update", "Customers")
.Data("versionNumber"))
)
.Resizable(resize => resize.Columns(true))
)
</
div
>
<
script
type
=
"text/javascript"
>
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message);
}
}
function versionNumber(){
return {version: $("#txtVersionNumber").val()};
}
</
script
>
public
ActionResult TrackAndTrace_Read([DataSourceRequest] DataSourceRequest request)
{
// Get the customer Id from the URL
int
customerIdValue = 0;
if
(Request.UrlReferrer.Segments.Length > 1)
{
string
customerId = Request.UrlReferrer.Segments[Request.UrlReferrer.Segments.Length - 1];
int
.TryParse(customerId,
out
customerIdValue);
}
var data = GetCustomerTrackAndTraceTypeDetails(customerIdValue, request.Page).TrackAndTraceTypeList.AsEnumerable();
return
Json(data.ToDataSourceResult(request));
}
[AcceptVerbs(HttpVerbs.Post)]
public
ActionResult TrackAndTrace_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix =
"models"
)]IEnumerable<CustomerTrackAndTraceType> trackAndTraceTypes)
{
if
(trackAndTraceTypes !=
null
&& ModelState.IsValid)
{
int
customerIdValue = 0;
if
(Request.UrlReferrer.Segments.Length > 1)
{
string
customerId = Request.UrlReferrer.Segments[Request.UrlReferrer.Segments.Length - 1];
int
.TryParse(customerId,
out
customerIdValue);
}
Customer currentCustomer = db.Customers.Find(customerIdValue);
foreach
(var tttItem
in
trackAndTraceTypes)
{
// Save the Track And Trace Type Updates
db.AddCustomerTrackAndTraceTypeLink(tttItem.TrackAndTraceTypeId,
tttItem.CustomerId,
tttItem.Description,
tttItem.MTC,
tttItem.Failure,
tttItem.Multiple,
tttItem.Success,
tttItem.Photo,
User.Identity.Name);
// record who made the change
// Update the customer level for the Grid
tttItem.CustomerLevel = currentCustomer.Name;
}
}
return
Json(trackAndTraceTypes.ToDataSourceResult(request, ModelState));
}
public ActionResult TestIndex()
@model IEnumerable<Zeus.Models.Site>
[ArgumentOutOfRangeException: Index must be within the bounds of the List.<
br
>Parameter name: index]<
br
> System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) +64<
br
> System.Collections.ObjectModel.Collection`1.Insert(Int32 index, T item) +9573490<
br
> Kendo.Mvc.UI.Grid`1.WriteHtml(HtmlTextWriter writer) +365<
br
> Kendo.Mvc.UI.WidgetBase.ToHtmlString() +86<
br
> Kendo.Mvc.UI.Fluent.WidgetBuilderBase`2.ToHtmlString() +22
public
class
ImageBrowserController : EditorImageBrowserController
{
private
const
string
contentFolderRoot =
"~/Content/"
;
private
const
string
prettyName =
"Images/"
;
private
static
readonly
string
[] foldersToCopy =
new
[] {
"~/uploads/newsitem/"
};
/// <summary>
/// Gets the base paths from which content will be served.
/// </summary>
public
override
string
ContentPath
{
get
{
return
CreateUserFolder();
}
}
private
string
CreateUserFolder()
{
var virtualPath = Path.Combine(contentFolderRoot,
"UserFiles"
, prettyName);
var path = Server.MapPath(virtualPath);
if
(!Directory.Exists(path))
{
Directory.CreateDirectory(path);
foreach
(var sourceFolder
in
foldersToCopy)
{
CopyFolder(Server.MapPath(sourceFolder), path);
}
}
return
virtualPath;
}
private
void
CopyFolder(
string
source,
string
destination)
{
if
(!Directory.Exists(destination))
{
Directory.CreateDirectory(destination);
}
foreach
(var file
in
Directory.EnumerateFiles(source))
{
var dest = Path.Combine(destination, Path.GetFileName(file));
System.IO.File.Copy(file, dest);
}
foreach
(var folder
in
Directory.EnumerateDirectories(source))
{
var dest = Path.Combine(destination, Path.GetFileName(folder));
CopyFolder(folder, dest);
}
}
}
$(
"#Content"
).kendoEditor({
encoded:
false
,
imageBrowser: {
messages: {
dropFilesHere:
"Drop files here"
},
transport: {
read:
"/console/ImageBrowser/Read"
,
destroy: {
url:
"/console/ImageBrowser/Destroy"
,
type:
"POST"
},
create: {
url:
"/console/ImageBrowser/Create"
,
type:
"POST"
},
thumbnailUrl:
"/console/ImageBrowser/Thumbnail"
,
uploadUrl:
"/console/ImageBrowser/Upload"
,
imageUrl:
"/console/ImageBrowser/Image?path={0}"
}
},
tools: [
"bold"
,
"italic"
,
"underline"
,
"strikethrough"
,
"fontSize"
,
"foreColor"
,
"backColor"
,
"justifyLeft"
,
"justifyCenter"
,
"justifyRight"
,
"justifyFull"
,
"createLink"
,
"unlink"
,
"insertImage"
,
"style"
,
"viewHtml"
],
style: [
{ text:
"Highlight Error"
, value:
"hlError"
},
{ text:
"Highlight OK"
, value:
"hlOK"
},
{ text:
"Inline Code"
, value:
"inlineCode"
}
],
stylesheets: [
"../../content/web/editor/editorStyles.css"
]
});