Cześć,
Chciałbym zbudować własny HtmlHelper dla jakiejś (dowolnej) kontroli z możliwością określenia ustawień parametrów (nazwa, wysokość, szerokość, kolumny - dla tabeli) w sposób jak np. umożliwiają to kontroli telerik:
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.CustomerViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.ContactName)
.ClientTemplate(
@"<div class='customer-photo'
style='background-image: url(" + @Url.Content("~/content/web/Customers/#:data.CustomerID#.jpg") + ");'></div><div class='customer-name'>#: ContactName #</div>")
.Width(240);
columns.Bound(c => c.ContactTitle);
columns.Bound(c => c.CompanyName);
columns.Bound(c => c.Country).Width(150);
})
.HtmlAttributes(new { style = "height: 550px;" })
.Scrollable()
.Groupable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Customers_Read", "Grid"))
.PageSize(20)
)
)
lub np. DevExpress:
@Html.DevExpress().GridView(settings => {
settings.Name = "gridView";
settings.CallbackRouteValues = new { Controller = "DataBinding", Action = "SimpleCustomBindingPartial" };
settings.CustomBindingRouteValuesCollection.Add(
GridViewOperationType.Paging,
new { Controller = "DataBinding", Action = "SimpleCustomBindingPagingAction" }
);
settings.CustomBindingRouteValuesCollection.Add(
GridViewOperationType.Sorting,
new { Controller = "DataBinding", Action = "SimpleCustomBindingSortingAction" }
);
settings.Width = Unit.Percentage(100);
settings.Columns.Add("From").Width = Unit.Pixel(200);
settings.Columns.Add("Subject");
settings.Columns.Add(column => {
column.FieldName = "Sent";
column.ColumnType = MVCxGridViewColumnType.DateEdit;
column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
column.Width = Unit.Pixel(100);
});
settings.Columns.Add("Size").Settings.AutoFilterCondition = AutoFilterCondition.Equals;
settings.Columns.Add("HasAttachment", "Attachment?", MVCxGridViewColumnType.CheckBox).Width = Unit.Pixel(100); ;
settings.ClientSideEvents.Init = "function(s, e) { s.PerformCallback(); }";
settings.ClientSideEvents.BeginCallback = "function(s, e) { OnStartCallback(s, e); }";
settings.ClientSideEvents.EndCallback = "function(s, e) { OnEndCallback(s, e); }";
DevExpress.Web.Demos.GridViewFeaturesHelper.SetupGlobalGridViewBehavior(settings);
}).BindToCustomData(Model).GetHtml()
Oczywiście rodzaj parametrów byłby uzależniony od rodzaju kontrolki którą chciałbym zbudować.
Wpadł komuś w oko jakiś tutorial...