Telerik Forums
UI for ASP.NET MVC Forum
3 answers
404 views

I am trying to create extension method for GridBoundColumnBuilder for setting aggregate cell for column and format it. The attempt is in following style (grid_ext_1.png).

My intent is to set dataSource.Aggregates for column to count sum of all items, and ClientFooterTemplate to perform formatting of aggregate cell.

Another intent is to reduce the whole code -  as I have already bound property of class to column (in the GridColumnFactory), I do not want to write another method for setting aggregate item (in the DataSourceAggregateDescriptorFactory). I have ~40 columns in one grid and it is really hurts to write method for every column 2 times.

In the case of the attached code I have an exception "Ambigous Match Found". Due to head of stack trace:

   in System.RuntimeType.GetPropertyImpl(String name, BindingFlags bindingAttr, Binder binder, Type returnType, Type[] types, ParameterModifier[] modifiers)
   in System.Type.GetProperty(String name)
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilder.<>c__DisplayClassc.<CreateProjectionMemberBindings>b__b(AggregateFunction f, Expression e)
   in Kendo.Mvc.Extensions.EnumerableExtensions.<ZipIterator>d__7`3.MoveNext()
   in System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   in System.Dynamic.Utils.CollectionExtensions.ToReadOnly[T](IEnumerable`1 enumerable)
   in System.Linq.Expressions.Expression.MemberInit(NewExpression newExpression, IEnumerable`1 bindings)
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilder.CreateProjectionInitExpression()
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilder.CreateAggregateFunctionsProjectionMemberBinding()
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.QueryableAggregatesExpressionBuilder.<CreateMemberBindings>d__0.MoveNext()
   in System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   in System.Dynamic.Utils.CollectionExtensions.ToReadOnly[T](IEnumerable`1 enumerable)
   in System.Linq.Expressions.Expression.MemberInit(NewExpression newExpression, IEnumerable`1 bindings)
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilder.CreateSelectBodyExpression()
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilder.CreateSelectExpression()
   in Kendo.Mvc.Infrastructure.Implementation.Expressions.GroupDescriptorExpressionBuilderBase.CreateQuery()
   in Kendo.Mvc.Extensions.QueryableExtensions.Aggregate(IQueryable source, IEnumerable`1 aggregateFunctions)
   in Kendo.Mvc.Extensions.QueryableExtensions.CreateDataSourceResult[TModel,TResult](IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState, Func`2 selector)
   in Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState)
   in Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable enumerable, DataSourceRequest request)
   in Kendo.Mvc.UI.DataSource.Process(DataSourceRequest request, Boolean processData)
   in Kendo.Mvc.UI.Grid`1.ProcessDataSource()

it seems that aggregates builder fails to get a property of class. But if I had an duplicate property name - I would find it at compilation time.

So, I have no idea what Kendo finds ambiguous.

Can you point out what I'm doing wrong? How to write an extension method which will satisfy my objectives correctly?

Angel Petrov
Telerik team
 answered on 29 Sep 2016
4 answers
115 views

Hi,

When there is one diagram in the page like:

@(Html.Kendo().Diagram()
            .Name("diagram1")
            .Layout(l => l
                .Type(DiagramLayoutType.Tree)
                .Subtype(DiagramLayoutSubtype.Right)
                .HorizontalSeparation(30)
                .VerticalSeparation(20)
            )
            ...........
)
it renders correct (tree right).

But when there is another diagram:

@(Html.Kendo().Diagram()
            .Name("diagram2")
            )
            .Layout(l => l
                .Type(DiagramLayoutType.Tree)
                .Subtype(DiagramLayoutSubtype.Down)
                .HorizontalSeparation(30)
                .VerticalSeparation(20)
            )

first diagram renders also "tree down"...

So, what should I do?

 

Kaan
Top achievements
Rank 1
 answered on 29 Sep 2016
3 answers
388 views

Hi,

I have a view with a standalone datepicker (controller/index(DateTime? date))

@(Html.Kendo().DatePicker()
      .Name("datePicker")
      .Events(e => e.Change("change"))
      )

Now I want to have a change event to go to the same page (controller/index(date = result of the datepicker)

function change() {
//something
}

Eduardo Serra
Telerik team
 answered on 28 Sep 2016
2 answers
120 views

when i Integrate sortable with listview,I found that when editable,the textbox cannot focus with mouse,only can use tab focus

 

the listview like this:

    @(Html.Kendo().ListView<txlcinfo.Web.Areas.Institute.Models.UserModel>()
                .Name("AllUserView")
                .TagName("div")
                .ClientTemplateId("UserTemplate")
                .DataSource(dataSource =>
                {
                    dataSource.Create(create => create.Action("Users_Create", "Home"));
                    dataSource.Read(read => read.Action("Users_Read", "Home"));
                    dataSource.Destroy(destory => destory.Action("Delete_User", "Home"));
                    dataSource.Model(model => { model.Id("ID"); });
                })                
                .Editable(edt=>edt.TemplateName("UserModelTemplate"))
                )
    @(Html.Kendo().Sortable()
    .For("#AllUserView")
    )
and the template like this :

@model txlcinfo.Web.Areas.Institute.Models.UserModel
    <div class="product UserPanel list-view-container" style="width:240px;margin:5px;" data-bind="#:ID#" data-id="#:isSelected#" data-old-id="#:isSelected#">
        <div class="row" style="margin:9px;margin-top:15px;">
            <label for="Name" class="select-period">名字</label>
            @(Html.EditorFor(p => p.Name))
            <!-- ProductName validation message placeholder -->
            <span data-for="Name" class="k-invalid-msg"></span>
        </div>
        <div class="row" style="margin:9px;">
            <label for="Name" class="select-period">性别</label>
            @(Html.Kendo().TextBoxFor(p => p.Male))
            <!-- ProductName validation message placeholder -->
            <span data-for="Male" class="k-invalid-msg"></span>
        </div>
        <div class="row" style="margin:9px;">
            <label for="PhoneNum" class="select-period">电话</label>
            @(Html.EditorFor(p => p.PhoneNum))
            <!-- ProductName validation message placeholder -->
            <span data-for="Name" class="k-invalid-msg"></span>
        </div>
        <div class="edit-buttons row" style="margin:10px;float:right;">
            <a class="k-button k-button-icontext k-update-button" href="\\#"><span class="k-icon k-update"></span>保存</a>
            <a class="k-button k-button-icontext k-cancel-button" href="\\#"><span class="k-icon k-cancel"></span>取消</a>
        </div>
        <div class="row" style="margin:5px;"></div>
        </div>
the result is the textbox cannot focus with mouse ,only can focus with ‘tab' key?

Vasil
Telerik team
 answered on 28 Sep 2016
1 answer
622 views

We are implementing the Kendo Scheduler as part of a time attendance manager. While it works mostly as intended, the update code is cripplingly slow for larger data sets:

In our working example for a dataset of ~770 users, the schedule.view(schedule.view().name) call takes almost 3.5 seconds.
During this time the page is completely unresponsive and it's kinda ruining the UX.

Do you have any suggestions to refreshing the schedule, with or without calling "schedule.view(schedule.view().name)", which is more responsive?

Example code:

(function () {
        var element, scheduler;
        benchmark.measure("Trigger updateFilters", function () { element = $('#scheduler'); scheduler = element.data('kendoScheduler'); });
        benchmark.measure("Trigger updateFilters", function () { element.show(); });
        benchmark.measure("Trigger updateFilters", function () {
            scheduler.dataSource.filter({
                operator: function (user) {
                    var result = true;
                    // snip for brevity //
                    return result;
                }
            });
        }, "scheduler.dataSource.filter()");
        benchmark.measure("Trigger updateFilters", function () { scheduler.view(scheduler.view().name); });
}());
(benchmark is a helper class to test timings)

Example measurements are attached.

Ivan Danchev
Telerik team
 answered on 28 Sep 2016
1 answer
144 views

Hi,
Now I am creating a page with a few asp .net mvc components such as bar chart, pie chart etc. Now I want to filter all of the datasource's in these components after selecting a specific value from the set of values in the listview that are being displayed on the side of the page using the script given below. 

function onChange(arg) {
        var selected = $.map(this.select(), function(item) {
            $("#select").html($(item).text());
        }
}

So I essentially want to filter all the components in the page using a value from the list.

Can someone show me how this is done using an example?

 

Thanks & Regards,

Adhip

Ianko
Telerik team
 answered on 28 Sep 2016
1 answer
180 views

I made an update of the UI for ASP.NET MVC. Now, in the tree view only the root is shown and no longer any child.

The view is as follows:

                @(Html.Kendo().TreeView()
                              .Name("treeviewInner")
                              .BindTo((IEnumerable<TreeViewItemModel>)ViewBag.TreeViewContent) 
                )
Here is the code in the controller:

        private List<TreeViewItemModel> GetTreeViewData()
        {
            var items = new List<TreeViewItemModel>()
            {
                new TreeViewItemModel()
                {
                    Text = "0",
                    Items = new List<TreeViewItemModel>()
                    {
                        new TreeViewItemModel()
                        {
                            Text = "1"
                        }
                    }
                }
            };

            return items;
        }

        public ActionResult TreeViewContent(int wbsHeaderId)
        {
            ViewBag.TreeViewContent = GetTreeViewData();
            return PartialView();
        }

Gil
Top achievements
Rank 1
 answered on 28 Sep 2016
3 answers
3.2K+ views

Hi guys,

i have been trying to use kendo window to pop up when ever a user enters wrong credentials. But when the page load for the first time it pop ups.

I tryed to change the visibility to "false" and to "true". when visibility is set to false, the window does not show any more. when visibility is set to true, the dialog window shows when the page loads for the first time.

Here is the code that im using below...

<script>
    $(document).ready(function () {
        var myWindow = $("#Popdiv"),
            undo = $("#submit");
 
        undo.click(function (e) {
        //    e.preventDefault();
        });
 
        $("#okayButton").kendoButton({
            click: function (e) {
                myWindow.data("kendoWindow").close();
            }
        });
 
        //$("#submit").click(function () {
        //       ValidateUsertwo();
        //  });
 
        function onClose() {
            undo.fadeIn();
        }
 
        myWindow.kendoWindow({
            width: 600,
            title: "Error",
            modal: true,
            iframe: true,
            actions: [
                'Pin',
                'Close',
                'Refresh'
            ],
            close: onClose,
           visible: true
        }).data("kendoWindow").center();
 
      
    });
 
    function ValidateUsertwo() {
        var ID = document.getElementById('<%:Html.IdFor(t => t.UserName) %>').value;
        var pass = document.getElementById('<%:Html.IdFor(t => t.Password) %>').value;
 
        if (ID == "") {
            myWindow.data("kendoWindow").open();
            return false;
        }
 
        if (pass == "") {
             
            return false;
        }
        if ('@TempData["msg"]' != "") {
            myWindow.data("kendoWindow").open();
            }
        }
    
    //$("#button").on("click", function (e) {
    //    mywin.data("kendoWindow").close();
    //});
   
 
</script>

help will be appreciated

thanks

 

Ianko
Telerik team
 answered on 27 Sep 2016
1 answer
203 views

Version - 2016.3.914

I am experiencing a problem getting DDL with templates to render properly when used in an editor template, from a grid.

Example :

Model

public class WeightUnit
{
    public byte ID { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
}



Controller action

public ActionResult WeightUnits_Read([DataSourceRequest]DataSourceRequest request)
{
    IEnumerable<Inflight.ServiceModel.WeightUnit> results = svc.ListWeightUnits();
    return Json(results.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}



Code section in View

<div id="weights" class="panel-group" style="padding-left:5px;">
       @Html.Label("Unit", new { style = "width:80px;" })
       @(Html.Kendo().DropDownList()
               .Name("WghtUnit_ID")
               .OptionLabel(Labels.PleaseSelect)
               .DataSource(source =>
               {
                   source.Custom()
                   .ServerFiltering(false)
                   .Type("aspnetmvc-ajax")
                   .Transport(transport =>
                   {
                       transport.Read("WeightUnits_Read", "Utility");
                   })
                   .Schema(schema =>
                   {
                       schema.Data("Data")
                   .Total("Total");
                   });
                   ;
               })
               .DataTextField("Description")
                .ValueTemplate("#: data.Code # - #: data.Description #")
               .DataValueField("ID"))
   </div>

Problem

When used in an EditorTemplate for adding/editing a record to a grid, the selected value is rendered as ' - undefined'

The exact same code  works perfectly well in a basic view.

Am I doing something wrong ?  I assumed that templates could be used in any scenario.

 

Mike

Viktor Tachev
Telerik team
 answered on 27 Sep 2016
3 answers
747 views

Product: UI for ASP.NET MVC 2016.2.714 Commercial
Title: Label text overlapping data bars and legend icons when exporting bar chart to PDF
Description: I am experiencing an issue where a chart looks great within the browser window, but once exported to PDF, some of the text overlaps the series bars and legend icons.  Please refer to attached screenshots showing the in-browser vs. exported-to-PDF renderings.  The category axis labels on the left are overlapping the series bars, and furthermore are not all right-aligned with each other.  The legend labels are also overlapping their icons.  The Razor markup is shown below:
 
@(Html.Kendo().Chart<ReportControlSummaryViewModel>()
                        .Name("controlsChart")
                        .HtmlAttributes(new { style = "height: 619px;" })
                        .Title("Control Summary")
                        .Legend(legend => legend
                            .Position(ChartLegendPosition.Bottom)
                        )
                        .ChartArea(chartArea => chartArea.Background("transparent"))
                        .SeriesDefaults(seriesDefaults => seriesDefaults.Bar().Stack(true))
                        .Series(series =>
                        {
                            series.Bar(model => model.Implemented).Name("Implemented").Color("#00ff00");
                            series.Bar(model => model.Unimplemented).Name("Unimplemented").Color("#ff0000");
                        })
                        .CategoryAxis(axis => axis
                            .Categories(model => model.Name)
                            .MajorGridLines(lines => lines.Visible(false))
                        )
                        .ValueAxis(axis => axis
                            .Numeric()
                            .Line(line => line.Visible(false))
                        )
                        .Tooltip(tooltip => tooltip.Visible(true))
                        .Pdf(pdf => pdf
                            .FileName("Control Categories Control Summary Report.pdf")
                            .ProxyURL(Url.Action("Save", "Export"))                            
                        )
                        .DataSource(dataSource => dataSource.Read(read => read.Action("ControlCategoryControlSummary", "Report").Data("app.getFilters")))                        
                    )

Bozhidar
Telerik team
 answered on 27 Sep 2016
Narrow your results
Selected tags
Tags
Grid
General Discussions
Scheduler
DropDownList
Chart
Editor
TreeView
DatePicker
ComboBox
Upload
MultiSelect
ListView
Window
TabStrip
Menu
Installer and VS Extensions
Spreadsheet
AutoComplete
TreeList
Gantt
PanelBar
NumericTextBox
Filter
ToolTip
Map
Diagram
Button
PivotGrid
Form
ListBox
Splitter
Application
FileManager
Sortable
Calendar
View
MaskedTextBox
PDFViewer
TextBox
Toolbar
Dialog
MultiColumnComboBox
DropDownTree
Checkbox
Slider
Switch
Notification
Accessibility
ListView (Mobile)
Pager
Security
ColorPicker
DateRangePicker
Wizard
Styling
Chat
DateInput
MediaPlayer
TileLayout
Drawer
SplitView
Template
Barcode
ButtonGroup (Mobile)
Drawer (Mobile)
ImageEditor
RadioGroup
Sparkline
Stepper
TabStrip (Mobile)
GridLayout
Badge
LinearGauge
ModalView
ResponsivePanel
TextArea
Breadcrumb
ExpansionPanel
Licensing
Rating
ScrollView
ButtonGroup
CheckBoxGroup
NavBar
ProgressBar
QRCode
RadioButton
Scroller
Timeline
TreeMap
TaskBoard
OrgChart
Captcha
ActionSheet
Signature
DateTimePicker
AppBar
BottomNavigation
Card
FloatingActionButton
Localization
MultiViewCalendar
PopOver (Mobile)
Ripple
ScrollView (Mobile)
Switch (Mobile)
PivotGridV2
FlatColorPicker
ColorPalette
DropDownButton
AIPrompt
PropertyGrid
ActionSheet (Mobile)
BulletGraph
Button (Mobile)
Collapsible
Loader
CircularGauge
SkeletonContainer
Popover
HeatMap
Avatar
ColorGradient
CircularProgressBar
SplitButton
StackLayout
TimeDurationPicker
Chip
ChipList
DockManager
ToggleButton
Sankey
OTPInput
ChartWizard
SpeechToTextButton
InlineAIPrompt
TimePicker
StockChart
RadialGauge
ContextMenu
ArcGauge
AICodingAssistant
SmartPasteButton
PromptBox
SegmentedControl
+? more
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?