public static GridBoundColumnBuilder <TModel> TruncatedTextTemplate <TModel>(this GridBoundColumnBuilder <TModel> builder, Expression <Func <TModel, string> > longText, Expression <Func <TModel, string> > shortText) where TModel : class { var longTextPopertyName = ExpressionHelper.GetPropertyName(longText); var shortPropertyName = ExpressionHelper.GetPropertyName(shortText); return(builder.ClientTemplate(string.Format("<span title=\" #= {0} || '' # \"> #= {1} || '' #</span>", longTextPopertyName, shortPropertyName))); }
public static GridBoundColumnBuilder <TModel> GridAction <TModel>(this GridBoundColumnBuilder <TModel> columnBuilder, string linkText, string url, string name = null) where TModel : class { string template = columnBuilder.ColClientTemplate; string linkId = !string.IsNullOrEmpty(name) ? string.Format("{0}.#={1}#", name, columnBuilder.ColName) : string.Empty; if (!string.IsNullOrEmpty(template)) { template += " "; } int i = url.IndexOf('?'); if (i != -1) { url = url.Insert(i, string.Format("/#={0}#", columnBuilder.ColName)); } else { url = url + string.Format("/#={0}#", columnBuilder.ColName); } template += string.Format("<a id=\"{0}\" href=\"{1}\">{2}</a>", linkId, url, linkText); return(columnBuilder.ClientTemplate(template)); }
/// <summary> /// Extensao do GridBound para criação do checkbox para visualização de campos true/false /// </summary> /// <typeparam name="TModel">Tipo utilizado pela coluna</typeparam> /// <param name="builder">Objeto extendido</param> /// <param name="id">Nome do objeto de checkbox</param> /// <returns>GridBound de retorno</returns> public static GridBoundColumnBuilder <TModel> VisualizarCheckBox <TModel>(this GridBoundColumnBuilder <TModel> builder, string id, string campoAtivo = "IsAtivo") where TModel : class, new() { var template = "<input name='IsAtivo#= " + id + "#>' id='IsAtivo#= " + id + "#' type='checkbox' #= " + campoAtivo + " ? checked='checked' : '' # onclick='return false;' />"; return(builder.HtmlAttributes(new { style = "text-align: center;" }).ClientTemplate(template));; }
public static GridBoundColumnBuilder <T> GridCommands <T>(this GridBoundColumnBuilder <T> builder, int?width, string firstValue, params string[] values) where T : class { var template = new[] { firstValue }.Union(values).Select(v => string.Format("<span class=\"emsg-grid-action\">{0}</span>", v)).ToArray(); return(builder.ClientTemplate(string.Format("<div{0}>", width.HasValue ? " style=\"width: " + width.Value + "px\"" : "") + string.Join("", template) + "</div>") .Title("") .Sortable(false) .Filterable(false)); }
public static GridBoundColumnBuilder <TModel> DisplayNameTitle <TModel>(this GridBoundColumnBuilder <TModel> builder) where TModel : class, new() { // Create an adapter to access the typed grid column (which contains the Expression) Type adapterType = typeof(GridBoundColumnAdapter <,>).MakeGenericType(typeof(TModel), builder.Column.MemberType); IGridBoundColumnAdapter adapter = (IGridBoundColumnAdapter)Activator.CreateInstance(adapterType); // Use the adapter to get the title and set it return(builder.Title(adapter.GetDisplayName(builder.Column))); }
public static GridBoundColumnBuilder <TModel> Sum <TModel>(this GridBoundColumnBuilder <TModel> builder, string formatString = null) where TModel : class { string sum = string.Format("#= sum == 0 ? '0' : kendo.format('{0}', sum) #", formatString ?? FormatStrings.TelerikGridSumFormat); return(builder .AlignRight() .AggregateForKendo("sum") .ClientFooterTemplate(string.Format("<div style='text-align: right;'>{0}</div>", sum))); }
//public static GridCrudCommandsColumnBuilder<T> CrudCommands<T>(this GridColumnFactory<T> factory, FilterRow filterRow = null) where T : class //{ // if (filterRow != null) // filterRow.AddCell(new ButtonFilterCell()); // var templateColumnBuilder = factory.Template(model => { }); // return new GridCrudCommandsColumnBuilder<T>(templateColumnBuilder); //} public static GridBoundColumnBuilder <TModel> Bound <TModel, TValue>(this GridColumnFactory <TModel> factory, Expression <Func <TModel, TValue> > expression, FilterRow filterRow) where TModel : class { GridBoundColumnBuilder <TModel> builder = factory.Bound(expression); filterRow.AddCell(new TextFilterCell(builder.Column.Member)); return(builder); }
public static GridBoundColumnBuilder <TModel> ForeignKey <TModel, TValue>(this GridColumnFactory <TModel> factory, Expression <Func <TModel, TValue> > expression, IEnumerable data, string dataFieldValue, string dataFieldText, FilterRow filterRow) where TModel : class { GridBoundColumnBuilder <TModel> builder = factory.ForeignKey(expression, data, dataFieldValue, dataFieldText); filterRow.AddCell(new DropDownFilterCell(builder.Column.Member, data, dataFieldValue, dataFieldText)); return(builder); }
public static GridBoundColumnBuilder <TModel> SetDefaultSettings <TModel>(this GridBoundColumnBuilder <TModel> gbc) where TModel : class { gbc .Filterable(ftb => { ftb.Cell(cell => { cell.Operator("contains"); cell.ShowOperators(true); }); }); return(gbc); }
public static GridBoundColumnBuilder <T> TemplateCheckBox <T>(this GridBoundColumnBuilder <T> builder) where T : class { string template = @" # if({0}) { # <i class='fa fa-lg fa-check'></i> # } else { # <i class='fa fa-lg fa-times'></i> # } # "; string fieldName = builder.Column.Member; template = template.Replace("{0}", fieldName); builder.ClientTemplate(template).HtmlAttributes(new { @class = "center" }); return(builder); }
public static GridBoundColumnBuilder <TModel> GridAjaxAction <TModel>(this GridBoundColumnBuilder <TModel> columnBuilder, string linkText, string url, string name = null, string confirmMessage = null) where TModel : class { string template = columnBuilder.ColClientTemplate; string linkId = !string.IsNullOrEmpty(name) ? string.Format("{0}.#={1}#", name, columnBuilder.ColName) : string.Empty; if (!string.IsNullOrEmpty(template)) { template += " "; } int i = url.IndexOf('?'); if (i != -1) { url = url.Insert(i, string.Format("/#={0}#", columnBuilder.ColName)); } else { url = url + string.Format("/#={0}#", columnBuilder.ColName); } var tb = new TagBuilder("a"); if (linkId != string.Empty) { tb.Attributes.Add("id", linkId); } tb.Attributes.Add("href", "javascript:void(0)"); tb.Attributes.Add("data-grid-action", url); if (string.IsNullOrEmpty(confirmMessage)) { confirmMessage = string.Format("Are you sure you want to {0}?", linkText.ToLower()); } tb.Attributes.Add("confirmMessage", confirmMessage); tb.SetInnerText(linkText); template += tb.ToString(); return(columnBuilder.ClientTemplate(template)); }
public static GridBoundColumnBuilder <T> AsEmsgCommand <T>(this GridBoundColumnBuilder <T> builder) where T : class { return(builder.Title("").Sortable(false).Width(10).Filterable(false)); }
public static GridBoundColumnBuilder <TModel> AggregateForKendo <TModel>(this GridBoundColumnBuilder <TModel> builder, string aggregateType) where TModel : class { return(builder.ClientFooterTemplate("#= 'aggregateType' #")); }
public GridBoundColumnBuilderTests() { column = new GridBoundColumn <Customer, int>(GridTestHelper.CreateGrid <Customer>(), c => c.Id); builder = new GridBoundColumnBuilder <Customer>(column); }
public static GridBoundColumnBuilder <T> GridCommands <T>(this GridBoundColumnBuilder <T> builder, string firstValue, params string[] values) where T : class { return(GridCommands(builder, null, firstValue, values)); }
public static GridBuilder <T> BuildGrid <T>( this GridBuilder <T> gridbuilder, string gridName, string ajaxController, bool useClientTemplateHtml ) where T : class { bool isEditable = true; bool isVisible = true; GridBuilder <T> retVal = gridbuilder.Name(gridName).DataKeys(k => k.Add("ID")) .Scrollable(sc => sc.Height("*")) .Resizable(rs => rs.Columns(true)) .EnableCustomBinding(true) .Pageable(paging => paging.PageSize(ConfigurationHelper.GetsmARTDetailGridPageSize()) .Style(Telerik.Web.Mvc.UI.GridPagerStyles.NextPreviousAndNumeric) .Total(100)) .DataBinding(bindings => bindings.Ajax() .Select("_Index", ajaxController) .Insert("_Insert", ajaxController) .Update("_Update", ajaxController) .Delete("_Delete", ajaxController)); if (isEditable && isVisible) { retVal.Editable(editing => editing.Enabled(isEditable).Mode(Telerik.Web.Mvc.UI.GridEditMode.PopUp).Window(w => w.Modal(true))).ToolBar(commands => commands.Insert()); } else { retVal.Editable(editing => editing.Enabled(false)); } Type typeT = typeof(T); PropertyInfo[] properties = typeT.GetProperties(); //// Add keys //GridDataKeyFactory<T> dataKeys = new GridDataKeyFactory<T>(retVal); //foreach (PropertyInfo property in properties) // if (IsAttributePresent<KeyAttribute>(property)) // dataKeys.Add(property.Name); // Add Columns if (!useClientTemplateHtml) { GridColumnFactory <T> columns = new GridColumnFactory <T>(retVal); foreach (PropertyInfo property in properties) { bool IsColumnVisible = !IsAttributePresent <HiddenInputAttribute>(property); GridBoundColumnBuilder <T> gridBoundBuilder = columns.Bound(property.Name).Visible(IsColumnVisible); //Set numeric column to right align. if (property.PropertyType == typeof(decimal) || property.PropertyType == typeof(double)) { gridBoundBuilder.HtmlAttributes(new { style = "text-align: right;" }).Format("{0:0.00}"); } if (IsAttributePresent <ClientTemplateHtmlAttribute>(property)) { gridBoundBuilder.ClientTemplate(property.TemplateHtmlForProperty()); } } if (isEditable && isVisible) { columns.Command(commands => { commands.Edit().ButtonType(Telerik.Web.Mvc.UI.GridButtonType.Image); commands.Delete().ButtonType(Telerik.Web.Mvc.UI.GridButtonType.Image); } ); } } else { Type type = typeof(T); retVal.ClientRowTemplate(type.TemplateHtml()).Columns(columns => columns.AutoGenerate(false)); } return(retVal); }
public static GridBoundColumnBuilder <TModel> ColumnAction <TModel>(this GridBoundColumnBuilder <TModel> builder, string title = null) where TModel : class { return(builder.Sortable(false).Filterable(false).Title(title)); }
public static GridBoundColumnBuilder <T> AddfooterAggregate <T>(this GridBoundColumnBuilder <T> col, string aggregate) where T : class { return(col.ClientFooterTemplate("سود: <span class='number'>#=kendo.toString(" + aggregate + ",'n0')#</span>"));; }
public IrisGridBuilder(HtmlHelper helper) { Type modelType = typeof(T); IrisGridAttribute gridAttribute = modelType.GetCustomAttribute <IrisGridAttribute>(); if (gridAttribute == null) { throw new InvalidOperationException("You cannot create a grid control with an object that does not have the IrisGridAttribute."); } DatabaseModelBindings bindings = modelType.GetDatabaseBindings(); PropertyInfo[] modelProperties = modelType.GetProperties(); AjaxDataSourceBuilder <T> dataSourceBuilder = null; UserService userService = new UserService(); using (SecurityUserService securityUserService = new SecurityUserService()) { WidgetFactory factory = new WidgetFactory(helper); builder = factory.Grid <T>(); builder.DataSource(ds => { dataSourceBuilder = ds.Ajax(); // .Aggregates(a => // { // a.Add(p => p.Labor_Quantity).Sum(); // a.Add(p => p.Equipment_Quantity).Sum(); // a.Add(p => p.Material_Quantity).Sum(); // a.Add(p => p.OutSideService_Quantity).Sum(); // }) //dataSourceBuilder.Events(e => //{ // e.Error("error"); // e.Change("onChange"); //}); dataSourceBuilder.PageSize(100); dataSourceBuilder.ServerOperation(true); dataSourceBuilder.Read(r => r.Url(GetAbsoluteUrl(gridAttribute.ReadPath)).Type(HttpVerbs.Get)); dataSourceBuilder.Create(c => c.Url(GetAbsoluteUrl(gridAttribute.CreatePath)).Type(HttpVerbs.Post)); dataSourceBuilder.Update(u => u.Url(GetAbsoluteUrl(gridAttribute.UpdatePath)).Type(HttpVerbs.Post)); dataSourceBuilder.Destroy(d => d.Url(GetAbsoluteUrl(gridAttribute.DestroyPath)).Type(HttpVerbs.Post)); }); builder.Name("grid"); builder.Columns(c => { // Create our command column for this object c.Command(command => { command.Destroy(); command.Edit(); }).Lockable(true).Locked(false).Width(180).Visible(userService.ValidateSecurityLevel(bindings.TableName, 3)); //.Model(model => // { // model.Id(m => m.Timecard_Key); // model.Field(m => m.Equipment_Unit_Cost).Editable(true); // model.Field(m => m.FuelImport).Editable(false); // model.Field(m => m.DateStamp).Editable(false); // model.Field(m => m.SecurityUser_Key).Editable(false); // model.Field(m => m.Timecard_Key).DefaultValue("1600000000"); // model.Field(m => m.SecurityUser_Key).DefaultValue(ViewData["CurrentSecurityUser"]); // model.Field(m => m.CreatedBySecurityUser_Key).DefaultValue(ViewData["CurrentSecurityUser"]); // model.Field(m => m.DateStamp).DefaultValue(DateTime.Now); // }) dataSourceBuilder.Aggregates(a => { dataSourceBuilder.Model(model => { // Setup the columns from our model properties foreach (PropertyInfo p in modelProperties) { // Get our column settings from the property attribute or use a default one IrisGridColumnAttribute columnAttributes = p.GetCustomAttribute <IrisGridColumnAttribute>(); if (columnAttributes == null) { columnAttributes = IrisGridColumnAttribute.Default; } switch (columnAttributes.Aggregate) { case AggregateMode.Sum: a.Add(p.Name, p.PropertyType).Sum(); break; case AggregateMode.Min: a.Add(p.Name, p.PropertyType).Min(); break; case AggregateMode.Max: a.Add(p.Name, p.PropertyType).Max(); break; case AggregateMode.Average: a.Add(p.Name, p.PropertyType).Average(); break; } if (p.Name == bindings.KeyFieldName) { model.Id(p.Name); } else { DataSourceModelFieldDescriptorBuilder <object> fieldBuilder = model.Field(p.Name, p.PropertyType); if (p.Name.EndsWith("User_Key", StringComparison.InvariantCultureIgnoreCase)) { fieldBuilder.DefaultValue(securityUserService.CurrentSecurityUser()); } } GridBoundColumnBuilder <T> column = c.Bound(p.Name); column.Lockable(true).Locked(false); // Setup our formatting for this column if (string.IsNullOrEmpty(columnAttributes.Format) == false) { column.Format(columnAttributes.Format); } // Setup our custom editor templates if they are needed if (p.PropertyType == typeDate) { column.EditorTemplateName("IRISDate"); } // Setup custom attributes if (p.GetCustomAttribute <RequiredAttribute>() != null) { column.HeaderHtmlAttributes(new { @Class = "required-field" }); } column.Width(columnAttributes.Width); } }); }); }); // Setup our column menus for filtering and sorting builder.ColumnMenu(m => { m.Enabled(true); m.Filterable(true); m.Sortable(true); m.Columns(true); }); // Setup our editable configuration builder.Editable(e => { e.Mode(GridEditMode.InLine); e.CreateAt(GridInsertRowPosition.Top); e.DisplayDeleteConfirmation(false); }); builder.Events(e => { // e.Edit("onGridEdit"); // e.Save("ValidateRow"); // Used for Update button // e.SaveChanges("ValidateRow"); // Used for Alt + s // e.DataBound("SelectFirstRow"); }); //.Excel(excel => excel // .FileName("Timecard.xlsx") // .Filterable(true) // .ProxyURL(Url.Action("Excel_Export_Save", "Grid")) //) //.Pdf(pdf => pdf // .FileName("Timecard.pdf") // .ProxyURL(Url.Action("Pdf_Export_Save", "Grid")) // .AllPages() //) builder.Filterable(); builder.Navigatable(setting => setting.Enabled(true)); builder.Pageable(p => p.Refresh(true).PageSizes(true).ButtonCount(5)); builder.Scrollable(a => a.Height(500)); builder.Resizable(resize => resize.Columns(true)); builder.Reorderable(reorder => reorder.Columns(true)); builder.Sortable(); builder.Selectable(); //.ToolBar(toolBar => //{ // toolBar.Create(); // toolBar.Excel(); // toolBar.Pdf(); //}) //.DataSource(ds => ds // .Ajax() // // .Sort(s => s.Add(t => t.Task_Date)) //.Columns(c => //{ // c.Command(command => { command.Destroy(); command.Edit(); }).Lockable(true).Locked(false).Width(180).Visible(AuthHelper.ValidateSecurityLevel("Timecard", 3)); // c.Bound(p => p.Task_Date).Width(180).Lockable(true).Locked(false).EditorTemplateName("IRISDate").HeaderHtmlAttributes(new { @Class = "required-field" }); // c.ForeignKey(p => p.Activity_Key, (System.Collections.IEnumerable)ViewData["Activities"], "Field1", "Field2").Width(350).Lockable(true).HeaderHtmlAttributes(new { @Class = "required-field" }).EditorTemplateName("IRISGridForeignKeyWithFilter"); // c.ForeignKey(p => p.Project_Key, (System.Collections.IEnumerable)ViewData["Projects"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.ProjectSub_Key, (System.Collections.IEnumerable)ViewData["ProjectSubs"], "ProjectSub_Key", "NameDesc").EditorTemplateName("ProjectSub").Width(200); // c.Bound(p => p.Crew_Num).Width(120); // c.ForeignKey(p => p.Employee_Key, (System.Collections.IEnumerable)ViewData["Employees"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.Labor_Quantity).HtmlAttributes(new { style = "text-align: right" }).Width(150).ClientGroupFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#").ClientFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#"); // c.ForeignKey(p => p.Pay_Type_Key, (System.Collections.IEnumerable)ViewData["Pay_Types"], "Field1", "Field2").Width(150).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.Premium_Key, (System.Collections.IEnumerable)ViewData["Premiums"], "Field1", "Field2").Width(150).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.Override_Labor_Rate).Format("{0:c}").HtmlAttributes(new { style = "text-align: right" }).Width(200); // c.Bound(p => p.Production).HtmlAttributes(new { style = "text-align: right" }).Width(130).ClientGroupFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#").ClientFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#"); // c.Bound(p => p.Equipment_Quantity).HtmlAttributes(new { style = "text-align: right" }).Width(200).ClientGroupFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#").ClientFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#"); // c.ForeignKey(p => p.Equipment_Key, (System.Collections.IEnumerable)ViewData["Equipments"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.Equipment_Unit_Cost).Format("{0:c}").HtmlAttributes(new { style = "text-align: right" }).Width(120); // c.Bound(p => p.Material_Quantity).HtmlAttributes(new { style = "text-align: right" }).Width(120).ClientGroupFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#").ClientFooterTemplate("Sum: #= kendo.format('{0:n}', sum)#"); // c.ForeignKey(p => p.Inventory_Location_Key, (System.Collections.IEnumerable)ViewData["Inventory_Locations"], "Inventory_Location_Key", "NameDesc").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.UOMName).Width(100); // c.Bound(p => p.Material_Description).Width(120); // c.Bound(p => p.Material_Unit_Cost).Format("{0:c}").HtmlAttributes(new { style = "text-align: right" }).Width(150); // c.ForeignKey(p => p.ResourceClass_Key, (System.Collections.IEnumerable)ViewData["ResourceClasss"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.OutSideServiceDescription).Width(120); // c.Bound(p => p.OutSideService_Quantity).HtmlAttributes(new { style = "text-align: right" }).Width(100); // c.Bound(p => p.OutSideServiceCost).Format("{0:c}").HtmlAttributes(new { style = "text-align: right" }).Width(120); // c.ForeignKey(p => p.Mgt_Unit_Key, (System.Collections.IEnumerable)ViewData["Mgt_Units"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.Program_Key, (System.Collections.IEnumerable)ViewData["Programs"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.Zone_Key, (System.Collections.IEnumerable)ViewData["Zones"], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.RBF_Key, (System.Collections.IEnumerable)ViewData["RBFs"], "Field1", "Field2").Width(200).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.Road_Key, (System.Collections.IEnumerable)ViewData["Roads"], "Field1", "Field2").Width(200).EditorTemplateName("IRISGridForeignKey"); // c.ForeignKey(p => p.RoadName_Key, (System.Collections.IEnumerable)ViewData["RoadNames"], "Field1", "Field2").Width(200).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.Beg_Point).Width(120); // c.Bound(p => p.End_Point).Width(120); // c.Bound(p => p.FromLocation).Width(180); // c.Bound(p => p.ToLocation).Width(180); // c.ForeignKey(p => p.Reason_Key, (System.Collections.IEnumerable)ViewData["Reasons"], "Field1", "Field2").Width(200).EditorTemplateName("IRISGridForeignKey"); // c.Bound(p => p.Comments).Width(280); // c.Bound(p => p.EquipmentMiles).HtmlAttributes(new { style = "text-align: right" }).Width(250); // c.Bound(p => p.EquipmentHours).HtmlAttributes(new { style = "text-align: right" }).Width(250); // // User defined fields // string title; // string userType; // //ViewBag.UserDefinedFields.User1 // for (int i = 0; i < ViewBag.UserDefinedFields.Count; i++ ) // { // title = ViewBag.UserDefinedFields[i].Title; // userType = ViewBag.UserDefinedFields[i].Type; // switch (userType) // { // case "String": // c.Bound(ViewBag.UserDefinedFields[i].Field).Title(title).Width(120); // break; // case "Date": // c.Bound(ViewBag.UserDefinedFields[i].Field).Title(title).EditorTemplateName("Date").Width(150); // break; // case "Numeric": // c.Bound(ViewBag.UserDefinedFields[i].Field).Title(title).EditorTemplateName("Number").HtmlAttributes(new { style = "text-align: right" }).Width(120); // break; // case "Checkbox": // c.Bound(ViewBag.UserDefinedFields[i].Field).Title(title).HtmlAttributes(new { style = "text-align: center" }).ClientTemplate("<input type='checkbox' #=" + ViewBag.UserDefinedFields[i].Field + " ? checked='checked' : '' # class='chkbx' disabled='disabled'></input>").Width(120); // break; // case "Lookup": // c.ForeignKey(ViewBag.UserDefinedFields[i].Field, (System.Collections.IEnumerable)ViewData["LookupUser" + (i + 1).ToString()], "Field1", "Field2").Width(350).EditorTemplateName("IRISGridForeignKey"); // break; // } // } // c.Bound(p => p.FuelImport).HtmlAttributes(new { style = "text-align: center" }).ClientTemplate("<input type='checkbox' #=FuelImport ? checked='checked' : '' # class='chkbx' disabled='disabled' readonly='readonly'></input>").Width(200); // c.Bound(p => p.Error_Message).Width(220); // c.Bound(p => p.DateStamp).Format("{0: MM/d/yyyy hh:mm:ss}").Width(175); // c.ForeignKey(p => p.SecurityUser_Key, (System.Collections.IEnumerable)ViewData["SecurityUsers"], "SecurityUser_Key", "UserName").Width(140); //}) //) } }
//Created By SK. public static GridBuilder <T> BuildGrid <T>( this GridBuilder <T> gridbuilder, string gridName, string ajaxController, string action, object routedValue, string indexID, string[] hiddenColumns = null, bool allowInsert = true, bool allowEdit = true, bool allowDelete = true, EnumFeatures feature = EnumFeatures.Exempt) where T : class { bool isEditable = true; bool isVisible = true; allowEdit &= (feature == EnumFeatures.Exempt) ? true : AccessControl.IsActionAccessible(HttpContext.Current.User, feature, EnumActions.Edit); allowInsert &= (feature == EnumFeatures.Exempt) ? true : AccessControl.IsActionAccessible(HttpContext.Current.User, feature, EnumActions.Add); allowDelete &= (feature == EnumFeatures.Exempt) ? true : AccessControl.IsActionAccessible(HttpContext.Current.User, feature, EnumActions.Delete); GridBuilder <T> retVal = gridbuilder.Name(gridName).DataKeys(k => k.Add("ID")) .Scrollable(sc => sc.Height("*")) .Resizable(rs => rs.Columns(true)) .EnableCustomBinding(true) .Pageable(paging => paging.PageSize(ConfigurationHelper.GetsmARTDetailGridPageSize()) .Style(Telerik.Web.Mvc.UI.GridPagerStyles.NextPreviousAndNumeric) .Total(100)) .DataBinding(bindings => bindings.Ajax() .Select(action, ajaxController, routedValue) .Insert("_Insert", ajaxController, new { isNew = (indexID.Equals("0") ? true : false) }) .Update("_Update", ajaxController, new { isNew = (indexID.Equals("0") ? true : false) }) .Delete("_Delete", ajaxController, new { MasterID = indexID, isNew = (indexID.Equals("0") ? true : false) }) ); if (isEditable && isVisible) { if (allowInsert) { retVal.Editable(editing => editing.Enabled(isEditable).Mode(Telerik.Web.Mvc.UI.GridEditMode.PopUp).Window(w => w.Modal(true))).ToolBar(commands => commands.Insert()); } retVal.Editable(editing => editing.Enabled(isEditable).Mode(Telerik.Web.Mvc.UI.GridEditMode.PopUp).Window(w => w.Modal(true))); } else { retVal.Editable(editing => editing.Enabled(false)); } Type typeT = typeof(T); PropertyInfo[] properties = typeT.GetProperties(); //// Add keys //GridDataKeyFactory<T> dataKeys = new GridDataKeyFactory<T>(retVal); //foreach (PropertyInfo property in properties) // if (IsAttributePresent<KeyAttribute>(property)) // dataKeys.Add(property.Name); // Add Columns GridColumnFactory <T> columns = new GridColumnFactory <T>(retVal); foreach (PropertyInfo property in properties) { bool IsColumnVisible = !IsAttributePresent <HiddenInputAttribute>(property); if (hiddenColumns != null && hiddenColumns.Contains(property.Name)) { continue; } GridBoundColumnBuilder <T> gridBoundBuilder = columns.Bound(property.Name).Visible(IsColumnVisible); //Set numeric column to right align. if (property.PropertyType == typeof(decimal) || property.PropertyType == typeof(double)) { gridBoundBuilder.HtmlAttributes(new { style = "text-align: right;" }).Format("{0:0.00}"); } if (IsAttributePresent <ClientTemplateHtmlAttribute>(property)) { gridBoundBuilder.ClientTemplate(property.TemplateHtmlForProperty()); } } if (isEditable && isVisible) { columns.Command(commands => { if (allowEdit) { commands.Edit().ButtonType(Telerik.Web.Mvc.UI.GridButtonType.Image); } if (allowDelete) { commands.Delete().ButtonType(Telerik.Web.Mvc.UI.GridButtonType.Image); } } ); } return(retVal); }
public static GridBoundColumnBuilder <T> RoundedImage <T>(this GridBoundColumnBuilder <T> columnBuilder) where T : class { return(columnBuilder.HtmlAttributes(new { @class = "rounded-image" })); }
public static GridBoundColumnBuilder <TModel> SumLabel <TModel>(this GridBoundColumnBuilder <TModel> builder) where TModel : class { return(builder.ClientFooterTemplate(string.Format("<div'><b>{0}</b></div>", GridHeaderFooterLocalization.GridFooterSumme))); }
public static GridBoundColumnBuilder <TModel> AlignRight <TModel>(this GridBoundColumnBuilder <TModel> builder, string formatString = null) where TModel : class { return(builder.HtmlAttributes(new { @class = "alignRight" })); }
public static GridBoundColumnBuilder <T> RightAlign <T>(this GridBoundColumnBuilder <T> columnBuilder) where T : class { return(columnBuilder.HtmlAttributes(new { style = "text-align:right;" }).HeaderHtmlAttributes(new { style = "text-align:right;" })); }
public static GridBuilder <T> GridControl <T>(this HtmlHelper helper, GridInfomation grid) where T : class { grid.ObjectType = grid.ObjectType != null ? grid.ObjectType : typeof(T);//Kiểu dữ liệu của đối tượng đang xét trên lưới. Action <GridSelectionSettingsBuilder> selection = new Action <GridSelectionSettingsBuilder>(d => d.Mode(GridSelectionMode.Single)); Action <PageableBuilder> pageable = new Action <PageableBuilder>(d => d.PageSizes(true).Refresh(true).ButtonCount(5)); Action <GridColumnFactory <T> > columns = new Action <GridColumnFactory <T> >(column => { if (grid.ValueFields != null) { column.AutoGenerate(false); foreach (var valueField in grid.ValueFields) { GridBoundColumnBuilder <T> bound = null; Type fieldValueType = null; if (grid.TypeFields != null && grid.TypeFields.Any(d => d.Key == valueField)) { fieldValueType = grid.TypeFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } else if (grid.ObjectType != null && grid.ObjectType.HasProperty(valueField)) { fieldValueType = grid.ObjectType.GetPropertyType(valueField); } if (fieldValueType != null) { bound = column.Bound(fieldValueType, valueField); } else { bound = column.Bound(valueField); } if (grid.HasDisplayFields()) { string displayField = grid.DisplayFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); if (!string.IsNullOrWhiteSpace(displayField)) { bound.Title(displayField); } } if (grid.InvisibleFields != null) { bound.Visible(!grid.InvisibleFields.Contains(valueField)); } if (grid.HasFormatFields()) { string formatField = grid.FormatFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); if (!string.IsNullOrWhiteSpace(formatField)) { bound.Format(formatField); } } } //1. Tạo command muốn hiển thị //column.Command(cmd => //{ // cmd.Edit(); //// //cmd.Custom("Change").Click("showpage"); //// //cmd.Custom("Edit").Click("ShowInfoCatBankEdit"); // cmd.Destroy(); //}).Width(300); } }); Action <DataSourceBuilder <T> > dataSource = new Action <DataSourceBuilder <T> >(d => { AjaxDataSourceBuilder <T> ajaxDataSource = d.Ajax(); //2. Xác định được id tương ứng khi click vào một record trên lưới ajaxDataSource.Model(m => m.Id(grid.ValueFields[0])); if (grid.PageSize > 0) { ajaxDataSource.PageSize(grid.PageSize); } if (!string.IsNullOrWhiteSpace(grid.IdPropertyName)) { ajaxDataSource.Model(model => model.Id(grid.IdPropertyName)); } if (!string.IsNullOrWhiteSpace(grid.Url)) { ajaxDataSource.Read(read => read.Url(grid.Url).Type(HttpVerbs.Post)); //ajaxDataSource.Update(read => read.Url(grid.EditUrl).Type(HttpVerbs.Post)); ////ajaxDataSource.Create(read => read.Url(grid.InsertUrl).Type(HttpVerbs.Post)); } if (!string.IsNullOrWhiteSpace(grid.InsertActionName)) { ajaxDataSource.Update(grid.EditActionName, grid.EditControllerName); //ajaxDataSource.Read(grid.DataActionName, grid.ControllerName); ajaxDataSource.Create(grid.InsertActionName, grid.InsertControllerName); //3. Phải xác định dược controller và action áp dụng cho nút xóa ajaxDataSource.Destroy(grid.DeleteActionName, grid.DeleteControllerName); } }); var gride = new Action <GridEventBuilder>(e => { if (!string.IsNullOrWhiteSpace(grid.Change)) { e.Change(grid.Change); } }); return(helper.Kendo().Grid <T>() .Name(grid.GridName) .Sortable() .Scrollable() //.ToolBar(t => //{ // t.Create(); // //t.Custom().Text("Add").Url("#").HtmlAttributes(new { onclick = "NewPageInsert()" }); // //t.Custom().Text("Add new").Url("#").HtmlAttributes(new { onclick = "ShowDivInsert()" }); //}) .Groupable() .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName(grid.TemplateName)) .Selectable(selection) .Pageable(pageable) .Columns(columns) .DataSource(dataSource) .Events(gride)); }
public static GridBuilder <T> VnrGrid <T>(this HtmlHelper helper, GridBuilderInfo builderInfo) where T : class { #region PageableBuilder Action <PageableBuilder> pageable = new Action <PageableBuilder>(d => d.PageSizes(builderInfo.ShowPageSize).Input(builderInfo.ShowInputPageNumber).PreviousNext(builderInfo.ShowNextPrevious).Numeric(builderInfo.ShowPageNumber).Refresh(true).ButtonCount(5)); builderInfo.ObjectType = builderInfo.ObjectType != null ? builderInfo.ObjectType : typeof(T); Action <GridSelectionSettingsBuilder> selection = new Action <GridSelectionSettingsBuilder>(d => d.Mode(builderInfo.SelectionMode).Type(builderInfo.SelectionType)); Action <GridToolBarCommandFactory <T> > toolBar = new Action <GridToolBarCommandFactory <T> >(d => { if (builderInfo.ShowCreateButton && !string.IsNullOrWhiteSpace(builderInfo.CreateActionUrl)) { d.Create().Text(DefaultConstants.Create.TranslateString()); } if (builderInfo.ShowSaveButton && !string.IsNullOrWhiteSpace(builderInfo.EditActionUrl)) { d.Save().Text(DefaultConstants.Create.TranslateString()); } if (builderInfo.ShowCustomCreate && !string.IsNullOrWhiteSpace(builderInfo.EventCustomAdd)) { d.Custom().Text(DefaultConstants.Create.TranslateString()).Url("#").HtmlAttributes(new { onclick = builderInfo.EventCustomAdd }); } if (builderInfo.ShowCustomSaveChanges && !string.IsNullOrWhiteSpace(builderInfo.EventCustomSaveChanges) && !string.IsNullOrWhiteSpace(builderInfo.EventCustomCancelChanges)) { d.Custom().Text(builderInfo.CustomSaveChangesText).Url("#").HtmlAttributes(new { onclick = builderInfo.EventCustomSaveChanges }); d.Custom().Text(builderInfo.CustomCancelChangesText).Url("#").HtmlAttributes(new { onclick = builderInfo.EventCustomCancelChanges }); } }); Action <GridEditingSettingsBuilder <T> > editing = new Action <GridEditingSettingsBuilder <T> >(d => { d.Mode(builderInfo.EditMode); if (!string.IsNullOrWhiteSpace(builderInfo.EditTemplate)) { d.TemplateName(builderInfo.EditTemplate); } }); Action <GridEventBuilder> events = new Action <GridEventBuilder>(d => { //if (builderInfo.ForeignKey.Count>0) // d.Save("onSave"); if (!string.IsNullOrWhiteSpace(builderInfo.SelectionHandler)) { d.Change(builderInfo.SelectionHandler); } if (!string.IsNullOrWhiteSpace(builderInfo.EventSaveChanges)) { d.SaveChanges(builderInfo.EventSaveChanges); } if (!string.IsNullOrWhiteSpace(builderInfo.EventDataBound)) { d.DataBound(builderInfo.EventDataBound); } else { //[Tung.Ly 20140908 ] : dùng mặc định (viết ở _layout.cshtml ở main) d.DataBound("dataBound"); } if (!string.IsNullOrWhiteSpace(builderInfo.EvenEdit)) { d.Edit(builderInfo.EvenEdit); } }); #endregion #region GridColumnFactory var lockedCol = false; if (builderInfo.LockedFields != null && builderInfo.LockedFields.Any()) { lockedCol = true; } Action <GridColumnFactory <T> > columns = new Action <GridColumnFactory <T> >(column => { if (builderInfo.ValueFields != null) { column.AutoGenerate(builderInfo.ValueFields.Count() == 0); if (builderInfo.ShowCheckbox) { if (builderInfo.ShowCheckAll) { column.Bound("").Title("").HeaderTemplate("<input type='checkbox' id='mastercheckbox' /><div style='border: solid 1px #c5c5c5; margin-top: -3px; border-radius: initial; display: none; width: 60px; position: fixed; z-index: 99; background-color: #F8F8F8; ' class='hrm_treeview' id='MultipleSelectForPage'> <label><input type='radio' value='0' name='selectOnePageOrAllPage' checked /> Page</label><br /> <label><input value='1' type='radio' name='selectOnePageOrAllPage' /> All</label></div>").ClientTemplate("<input type='checkbox' value='#=ID#' class='checkboxGroups'/>").Width(25).Locked(lockedCol).Sortable(false); } else { column.Bound("").Title("").ClientTemplate("<input type='checkbox' value='#=ID#' class='checkboxGroups'/>").Width(25).Locked(lockedCol).Sortable(false); } } if (builderInfo.ShowEditIcon) { column.Bound("").Title("").ClientTemplate("<img src='/Content/images/icons/edit-file-icon.png' title='Edit' alt='Edit' name='gridEditImgButton' class='gridEditImgButton' />").Width(30).Locked(lockedCol).Sortable(false); } if (builderInfo.ShowCommand) { column.Command(d => { if (builderInfo.ShowEditButton && !string.IsNullOrWhiteSpace(builderInfo.EditActionUrl)) { d.Edit() .Text(string.Empty) .UpdateText(DefaultConstants.Save.TranslateString()) .CancelText(string.Empty); // d.Edit().HtmlAttributes(new{@class="abdd"}) } if (builderInfo.ShowDeleteButton && !string.IsNullOrWhiteSpace(builderInfo.DeleteActionUrl)) { d.Destroy().Text(DefaultConstants.Delete.TranslateString()); } if (builderInfo.ShowCustomEdit && !string.IsNullOrWhiteSpace(builderInfo.EventCustomEdit)) { d.Custom(builderInfo.EditText).HtmlAttributes(new { @class = "k-icon k-i-pencil" }).Click(builderInfo.EventCustomEdit); } }).Width(170); } foreach (var valueField in builderInfo.ValueFields) { var locked = false; if (builderInfo.LockedFields != null) { if (builderInfo.LockedFields.Contains(valueField)) { locked = true; } } GridBoundColumnBuilder <T> bound = null; string displayField = string.Empty, formatField = string.Empty, hyperlinkField = string.Empty, template = string.Empty; bool filterable = false; Type fieldValueType = GetFieldValueType(builderInfo, valueField); if (fieldValueType != null) { //Biến phân biệt đã add foreignKey hay chưa bool _tmp = false; foreach (var foreignKey in builderInfo.ForeignKey) { if (foreignKey.Key.ToString() == valueField) { if (foreignKey.Key != null && foreignKey.Value != null && foreignKey.Value.Count() > 3) { IList lstFk = (IList)foreignKey.Value[2]; if (lstFk != null) { if (foreignKey.Value[4].ToString() != string.Empty) { bound = column.ForeignKey(foreignKey.Key.ToString(), lstFk, foreignKey.Value[0].ToString(), foreignKey.Value[1].ToString()).Width(150).Title(foreignKey.Value[3].ToString().TranslateString()).EditorTemplateName(foreignKey.Value[4].ToString()); } else { bound = column.ForeignKey(foreignKey.Key.ToString(), lstFk, foreignKey.Value[0].ToString(), foreignKey.Value[1].ToString()).Width(150).Title(foreignKey.Value[3].ToString().TranslateString()); } } _tmp = true; break; } } } if (!_tmp) { bound = column.Bound(fieldValueType, valueField).Locked(locked); if (fieldValueType.IsBoolean()) { bound.ClientTemplate("<input type='checkbox' disabled='" + builderInfo.DisabledCheckbox + "' #= " + valueField + " ? 'checked=checked':'' # class='chkbx' />"); } else if (fieldValueType.IsDateTime() || fieldValueType.IsFloat() || fieldValueType.IsNumeric() || fieldValueType.IsDouble() || fieldValueType.IsInteger() || fieldValueType.IsDecimal()) { bound.HtmlAttributes(new { style = "text-align:right" }); } if (fieldValueType.IsDouble()) { bound.EditorTemplateName("Number"); } if (fieldValueType.IsFloat()) { bound.EditorTemplateName("Percent"); } } } else { bound = column.Bound(valueField).Locked(locked); } if (builderInfo.HasDisplayFields()) { displayField = builderInfo.DisplayFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } if (string.IsNullOrWhiteSpace(displayField)) { displayField = valueField; } bound.Title(displayField.TranslateString()); #region Format Column if (builderInfo.HasFormatFields()) { formatField = builderInfo.FormatFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } if (builderInfo.HasHyperlink()) { hyperlinkField = builderInfo.HyperlinkFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } if (builderInfo.HasFilterable()) { filterable = builderInfo.Filterable.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } //bound.Filterable(filterable); bound.Filterable(filterable).Filterable(_filterable => _filterable .Extra(false) .Operators(ops => ops.ForString(str => str.Clear() .Contains("Contains") .StartsWith("Starts with") .EndsWith("Ends with") .IsEqualTo("Is equal to")) )); if (builderInfo.HasTemplate()) { template = builderInfo.Template.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); } if (builderInfo.HasSizeFields()) { int fieldWidth = builderInfo.SizeFields.Where(d => d.Key == valueField).Select(d => d.Value).FirstOrDefault(); if (fieldWidth >= 10) { bound.Width(fieldWidth); } } if (string.IsNullOrWhiteSpace(formatField)) { formatField = GetDefaultFormat(fieldValueType); } if (!string.IsNullOrWhiteSpace(hyperlinkField)) { var itemHyperlink = hyperlinkField.Split(','); if (itemHyperlink.Count() > 1) { bound.ClientTemplate("<a onClick=\"" + itemHyperlink[0] + "('#=" + itemHyperlink[1] + "#')\">#=" + valueField + "#</a>"); } else { bound.ClientTemplate("<a onClick=\"" + hyperlinkField + "('#=ID#')\">#=" + valueField + "#</a>"); } } if (builderInfo.SumFields != null && builderInfo.SumFields.Any()) { foreach (var field in builderInfo.SumFields) { if (field == valueField) { var str = "#=sum#"; if (!string.IsNullOrEmpty(builderInfo.FormatSum)) { str = "#=kendo.toString(sum,'" + builderInfo.FormatSum + "')#"; } bound.ClientFooterTemplate(str); break; } } } if (builderInfo.GroupHeaderTemplate != null && builderInfo.GroupFields != null && builderInfo.GroupFields.Any()) { var header = builderInfo.GroupHeaderTemplate; foreach (var field in builderInfo.GroupFields) { if (header.ContainsKey(field) && !string.IsNullOrEmpty(header[field].ToString())) { bound.ClientGroupHeaderTemplate(header[field]); break; } } } if (!string.IsNullOrWhiteSpace(formatField)) { if (!formatField.Contains("{") || !formatField.Contains("}")) { formatField = "{0:" + formatField + "}"; } bound.Format(formatField); } if (builderInfo.HiddenFields != null && builderInfo.HiddenFields.Contains(valueField)) { bound.Hidden(true); } #endregion } //foreach (var foreignKey in builderInfo.ForeignKey) //{ // if (foreignKey.Key != null && foreignKey.Value != null && foreignKey.Value.Count() > 3) // { // IList lstFk = (IList)foreignKey.Value[2]; // if (lstFk != null) // { // if (foreignKey.Value[4].ToString() != string.Empty) // { // column.ForeignKey(foreignKey.Key.ToString(), lstFk, foreignKey.Value[0].ToString(), foreignKey.Value[1].ToString()).Width(150).Title(foreignKey.Value[3].ToString().TranslateString()).EditorTemplateName(foreignKey.Value[4].ToString()); // } // else // { // column.ForeignKey(foreignKey.Key.ToString(), lstFk, foreignKey.Value[0].ToString(), foreignKey.Value[1].ToString()).Width(150).Title(foreignKey.Value[3].ToString().TranslateString()); // } // } // } //} //column.Bound("").Title("").Sortable(false).Filterable(false).CompareByOperator(; column.Bound("").Title("").Sortable(false).Filterable(filterable => filterable .Extra(false) .Operators(ops => ops.ForString(str => str.Clear() .Contains("Contains") .StartsWith("Starts with") .EndsWith("Ends with") .IsEqualTo("Is equal to")) )); } }); #endregion #region DataSourceBuilder Action <DataSourceBuilder <T> > dataSource = new Action <DataSourceBuilder <T> >(data => { AjaxDataSourceBuilder <T> ajaxDataSource = data.Ajax(); ajaxDataSource.Events(e => e.Error("ErrorHandler")); ajaxDataSource.Batch(builderInfo.Batch); int pos = Array.IndexOf(builderInfo.ValueFields, builderInfo.DefaultSortField); if (pos > -1) { ajaxDataSource.Sort(sort => sort.Add(builderInfo.DefaultSortField).Descending()); } if (!string.IsNullOrWhiteSpace(builderInfo.EventError)) { ajaxDataSource.Events(e => e.Error(builderInfo.EventError)); } if (builderInfo.GroupFields != null && builderInfo.GroupFields.Count() > 0) { foreach (var groupField in builderInfo.GroupFields) { if (!string.IsNullOrWhiteSpace(groupField)) { ajaxDataSource.Group(group => { group.Add(groupField, GetFieldValueType(builderInfo, groupField)); }); } } } if (builderInfo.SumFields != null && builderInfo.SumFields.Count() > 0) { ajaxDataSource.Aggregates(agg => { foreach (var sumField in builderInfo.SumFields) { if (!string.IsNullOrWhiteSpace(sumField)) { agg.Add(sumField, GetFieldValueType(builderInfo, sumField)).Sum(); } } }); } if (builderInfo.PageSize > 0) { ajaxDataSource.PageSize(builderInfo.PageSize); } if (!builderInfo.ServerOperation) { ajaxDataSource.ServerOperation(builderInfo.ServerOperation); } ajaxDataSource.Model(model => { if (!string.IsNullOrWhiteSpace(builderInfo.IdPropertyName)) { model.Id(builderInfo.IdPropertyName); } foreach (var valueField in builderInfo.ValueFields) { Type fieldValueType = GetFieldValueType(builderInfo, valueField); bool editable = true; if (builderInfo.DisableFields != null) { editable = !builderInfo.DisableFields.Contains(valueField); } if (fieldValueType != null) { model.Field(valueField, fieldValueType).Editable(editable); } else { model.Field(valueField, typeof(string)).Editable(editable); } } }); if (!string.IsNullOrWhiteSpace(builderInfo.ReadActionUrl)) { if (builderInfo.ReadActionUrl.Contains("/")) { if (!string.IsNullOrWhiteSpace(builderInfo.ReadData)) { //ajaxDataSource.Read(action => action.Url(builderInfo.ReadActionUrl).Data("OverWriteReadDataOnGrid(" + builderInfo.ReadData + ")")); ajaxDataSource.Read(action => action.Url(builderInfo.ReadActionUrl).Data(builderInfo.ReadData)); } else { //Trường hợp ReadActionUrl là một đường dẫn url ajaxDataSource.Read(action => action.Url(builderInfo.ReadActionUrl)); } } else { //Trường hợp ReadActionUrl là một action name trong một controller if (builderInfo.ReadParameter != null) { ajaxDataSource.Read(builderInfo.ReadActionUrl, builderInfo.Controller, builderInfo.ReadParameter); } if (!string.IsNullOrWhiteSpace(builderInfo.ReadData)) { ajaxDataSource.Read(r => r.Action(builderInfo.ReadActionUrl, builderInfo.Controller).Data(builderInfo.ReadData)); } //ajaxDataSource.Read(builderInfo.ReadActionUrl, builderInfo.Controller); } } if (!string.IsNullOrWhiteSpace(builderInfo.CreateActionUrl)) { if (builderInfo.CreateActionUrl.Contains("/")) { //Trường hợp ReadActionUrl là một đường dẫn url ajaxDataSource.Create(action => action.Url(builderInfo.CreateActionUrl)); } else { //Trường hợp ReadActionUrl là một action name trong một controller ajaxDataSource.Create(builderInfo.CreateActionUrl, builderInfo.Controller); } } if (!string.IsNullOrWhiteSpace(builderInfo.EditActionUrl)) { if (builderInfo.EditActionUrl.Contains("/")) { //Trường hợp ReadActionUrl là một đường dẫn url ajaxDataSource.Update(action => action.Url(builderInfo.EditActionUrl)); } else { //Trường hợp ReadActionUrl là một action name trong một controller ajaxDataSource.Update(builderInfo.EditActionUrl, builderInfo.Controller); } } if (!string.IsNullOrWhiteSpace(builderInfo.DeleteActionUrl)) { if (builderInfo.DeleteActionUrl.Contains("/")) { //Trường hợp ReadActionUrl là một đường dẫn url ajaxDataSource.Destroy(action => action.Url(builderInfo.DeleteActionUrl)); } else { //Trường hợp ReadActionUrl là một action name trong một controller ajaxDataSource.Destroy(builderInfo.DeleteActionUrl, builderInfo.Controller); } } }); #endregion #region GridBuilder var gridbuilder = helper.Kendo().Grid <T>() .Name(builderInfo.Name) .Groupable(d => d.Enabled(builderInfo.ShowGroupPanel)) .AutoBind(builderInfo.AutoBind) .Resizable(d => d.Columns(true)) .Reorderable(d => d.Columns(true)) .Sortable(d => d.SortMode(GridSortMode.MultipleColumn)) .ToolBar(toolBar) .Selectable(selection) .Pageable(pageable) .Columns(columns) .ColumnMenu() .Filterable() .Editable(editing) .DataSource(dataSource) .Events(events) //.ToolBar(tb => //{ // tb.Custom().Name("ChangeColumnMode").Text("<img alt='icon' class='k-image' src='../Content/images/icons/submenu/menu/Sys_table_edit.png'>ChangeColumnMode").Url("#").HtmlAttributes(new { onclick = "ClickButtonChangeColum2('" + builderInfo.ObjectType.Name + "')" }); // tb.Custom().Name("update-inventory").Text("Update Inventory").HtmlAttributes( // new {onclick = "onUpdateInventory()", title = "Update the system inventory from the OMS", @class="k-refresh"}); //} ) ; if (!string.IsNullOrEmpty(builderInfo.ClientDetailTemplateId)) { gridbuilder.ClientDetailTemplateId(builderInfo.ClientDetailTemplateId); } IDictionary <string, object> attributes = new Dictionary <string, object>(); var strStyle = string.Empty; if (builderInfo.GridHeight > 0) { strStyle += "height:" + builderInfo.GridHeight + "px; "; } if (builderInfo.GridWidth > 0) { strStyle += "width:" + builderInfo.GridWidth + "px; "; } if (!string.IsNullOrEmpty(strStyle)) { attributes.Add("style", strStyle); } if (attributes.Any()) { gridbuilder.HtmlAttributes(attributes); } if (builderInfo.ColumnFilterable) { gridbuilder.Filterable(); } if (builderInfo.ColumnMenu) { gridbuilder.ColumnMenu(); } if (builderInfo.Scrollable) { if (builderInfo.ScrollableHeight > 0) { gridbuilder.Scrollable(s => s.Height("auto")); } else { gridbuilder.Scrollable(); } } if (builderInfo.Navigatable) { gridbuilder.Navigatable(); } if (builderInfo.ToClientTemplate) { gridbuilder.ToClientTemplate(); } return(gridbuilder); #endregion }
public static GridBoundColumnBuilder <T> Centered <T>(this GridBoundColumnBuilder <T> columnBuilder) where T : class { return(columnBuilder.HtmlAttributes(new { align = "center" }) .HeaderHtmlAttributes(new { style = "text-align:center;" })); }
private void CreateGrid() { var modelName = _modelType.Name.Replace("Model", ""); GridSetupAttribute gridSetupAttribute = _modelType.GetCustomAttribute <GridSetupAttribute>(); _builder.Name("ReportListGrid"); AjaxDataSourceBuilder <T> dataSourceBuilder = null; _builder.DataSource(ds => { dataSourceBuilder = ds.Ajax(); dataSourceBuilder.Model(model => { model.Id(o => o.GetDatabaseBindings().KeyFieldName); }); dataSourceBuilder.ServerOperation(true); dataSourceBuilder.Read(r => r.Action("Read", modelName).Type(HttpVerbs.Get)); dataSourceBuilder.Create(c => c.Action("Create", modelName).Type(HttpVerbs.Post)); dataSourceBuilder.Update(u => u.Action("Update", modelName).Type(HttpVerbs.Post)); dataSourceBuilder.Destroy(d => d.Action("Destroy", modelName).Type(HttpVerbs.Post)); }); _builder.Columns(c => { dataSourceBuilder.Aggregates(a => { dataSourceBuilder.Model(m => { PropertyInfo[] modelProperties = _modelType.GetProperties(); //Incase we want to go with model attributes foreach (var p in modelProperties) { var columnAttributes = p.GetCustomAttribute <IrisGridColumnAttribute>() ?? IrisGridColumnAttribute.Default; if (p.Name.EndsWith("User_Key", StringComparison.InvariantCultureIgnoreCase)) //Give it a fake ID { m.Id(p.Name); } else { DataSourceModelFieldDescriptorBuilder <object> fieldBuilder = m.Field(p.Name, p.PropertyType); if (p.Name.EndsWith("User_Key", StringComparison.InvariantCultureIgnoreCase)) { fieldBuilder.DefaultValue(columnAttributes.GetDefaultValue()); //changed for now } else if (columnAttributes.DefaultValue != null) { fieldBuilder.DefaultValue(columnAttributes.GetDefaultValue()); } if (columnAttributes.ReadOnly) { fieldBuilder.Editable(false); } } GridBoundColumnBuilder <T> column = null; if (p.Name == "Favorite") { column = c.Bound(p.Name).ClientTemplate("<input type='checkbox' #=" + p.Name + " ? checked='checked' : '' # class='fav'></input>"); } else if (p.Name == "CustomReport") { column = c.Bound(p.Name).ClientTemplate("#=" + p.Name + " ? 'CR' : '' #").Editable("false"); } else { column = c.Bound(p.Name).Editable("false"); } column.Width(columnAttributes.Width); column.Hidden(columnAttributes.Hidden); if (p.GetCustomAttribute <DisplayFormatAttribute>() != null) { column.Format(p.GetCustomAttribute <DisplayFormatAttribute>().DataFormatString); } } }); }); }); _builder.Selectable(s => { s.Type(GridSelectionType.Row); }); _builder.Mobile(); _builder.Navigatable(); _builder.HtmlAttributes(new { style = "height: 700px; width: 350px" }); _builder.Scrollable(a => a.Height("100%")); _builder.Events(x => { x.DataBound("ReportListDataBound"); }); _builder.Editable(e => e.Mode(GridEditMode.InLine).Enabled(true)); }
public GridBoundColumnBuilderTests() { column = new GridBoundColumn<Customer, int>(GridTestHelper.CreateGrid<Customer>(), c=>c.Id); builder = new GridBoundColumnBuilder<Customer>(column); }
public static GridBoundColumnBuilder <T> AsNumber <T>(this GridBoundColumnBuilder <T> col) where T : class { return(col.ClientTemplate("<span class='number'>#=kendo.toString(" + col.Column.Member + ",'n0')#</span>")); }