Nov 13, 2012, 12:19 PM
Sample
Ok,
Here we go :
Controller
Regards,
Alberto.
Here we go :
Controller
public class AttachmentsController : Controller
{
TicketAttachmentViewModel[] data = new[] { new TicketAttachmentViewModel() {
CreationDate = DateTime.Today,
FileName = "First",
Guid = new Guid(),
Id = 1
},
new TicketAttachmentViewModel() {
CreationDate = DateTime.Today,
FileName = "Second",
Guid = new Guid(),
Id = 2
},
new TicketAttachmentViewModel() {
CreationDate = DateTime.Today,
FileName = "Third",
Guid = new Guid(),
Id = 3
},
new TicketAttachmentViewModel() {
CreationDate = DateTime.Today,
FileName = "Fourth",
Guid = new Guid(),
Id = 4
}
};
public ActionResult Index()
{
return View(data);
}
public ActionResult AttachmentsDownload(string code, Ext.Net.StoreRequestParameters parameters)
{
X.Msg.Notify("Filters value ", Request.Params["filter"]).Show();
return this.Direct();
}
}
View Model : public class TicketAttachmentViewModel
{
public Nullable<int> Id { get; set; }
public Guid Guid { get; set; }
public string FileName { get; set; }
public Nullable<DateTime> CreationDate { get; set; }
public Nullable<int> Size { get; set; }
}
Index.cshtml:@model IEnumerable<TicketAttachmentViewModel>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@(
Html.X().Viewport().Layout(LayoutType.Border).Items(vpItems =>
{
vpItems.Add(
Html.X().GridPanel()
.ID("attachmentsGrid")
.Region(Region.Center)
.Store(
Html.X().Store().ID("attachmentsStore")
.DataSource(Model)
.Model(
Html.X().Model().Fields(
new ModelField("CreationDate", ModelFieldType.Date),
new ModelField("FileName"),
new ModelField("Size", ModelFieldType.Int),
new ModelField("Guid", ModelFieldType.Auto)
)
).Sorters(
Html.X().DataSorter().Property("FileName").Direction(Ext.Net.SortDirection.ASC)
)
).ColumnModel(
Html.X().DateColumn().Text("Created On").DataIndex("CreationDate").Align(Alignment.Center),
Html.X().Column().Text("FileName").DataIndex("FileName").Flex(1),
Html.X().Column().Text("Size").DataIndex("Size").Renderer(RendererFormat.FileSize).Align(Alignment.Right)
).Features(
Html.X().GridFilters().Filters(
Html.X().DateFilter().DataIndex("CreationDate").DatePickerOptions(dpo => dpo.TodayText = "Now"),
Html.X().StringFilter().DataIndex("FileName")
).Local(true)
).View(
Html.X().GridView().StripeRows(true).TrackOver(true)
).TopBar(
Html.X().Toolbar().Items(
Html.X().Label().Text("Attachments").Cls("x-panel-header-text x-panel-header-text-default"),
Html.X().ToolbarFill(),
//Html.X().Button()
// .Text("To XML")
// .Icon(Icon.PageCode)
// .Handler("exportData(this.up('grid'));"),
Html.X().Button()
.Text("Download")
.IconCls("#Compress")
.DirectEvents(de =>
{
de.Click.Url = Url.Action("AttachmentsDownload");
de.Click.IsUpload = true;
de.Click.ExtraParams.Add(new Parameter
{
Name = "code",
Value = ViewBag.TicketCode,
Mode = ParameterMode.Value,
});
de.Click.ExtraParams.Add(new Parameter
{
Name = "filter",
Value = "this.up('grid').filters.getFilterData()",
Mode = ParameterMode.Raw,
});
de.Click.ExtraParams.Add(new Parameter
{
Name = "sort",
Value = "this.up('grid').store.getSorters()",
Mode = ParameterMode.Raw
});
}
)
)
)
.BottomBar(Html.X().PagingToolbar().DisplayInfo(true).EmptyMsg("No Elements").HideRefresh(true))
);
})
)
Layout :<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Test APP</title>
<link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
<meta name="viewport" content="width=device-width" />
@RenderSection("head", required: false)
</head>
<body>
@Html.X().ResourceManager().CleanResourceUrl(true)
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
Let me know if you need more info.Regards,
Alberto.