Telerik Forums
UI for ASP.NET MVC Forum
2 answers
348 views

Hi,

I would like users to direct to new pages/controllers when they click on different pieces of pie chart.

I found something similar https://www.telerik.com/forums/pie-chart-with-link but its related to RadCharts and not Kendo.

Can you please provide a code snippet or link to docs.

I tried using parameter like url but that didnt work.

 @(Html.Kendo().Chart()
                            .Name("chart")
                            .Title("Big Players")
                            .Legend(legend => legend
                                .Position(ChartLegendPosition.Bottom)
                            )
                            .Series(series =>
                            {
                                series.Pie(new dynamic[] {
new {category = "Apple",value = 40.3, color = "#ff3d00", url = "https://www.apple.com"},
new {category = "Microsoft",value = 0.4, color = "#f3e5f5", url = "https://www.microsoft.com"},
new {category = "IBM",value = 40.6, color = "#304ffe", url = "https://www.ibm.com"}

})
                                .Labels(labels => labels
                                    .Visible(true)
                                    .Template("#= category # - #= kendo.format('{0:P}', percentage)#")
                                );
                            }))

 

Thank you

StuartLittle
Top achievements
Rank 1
 answered on 03 May 2019
4 answers
265 views

Hi folks,

I'm running the Grid SignalR example (found here http://demos.telerik.com/aspnet-mvc/grid/signalr) locally.

Even though it is running locally, the sample still fetches data from the Web, instead of my local machine as in:

 var hubUrl = "http://demos.telerik.com/kendo-ui/service/signalr/hubs";

I want to run this entirely locally. I'm getting data from the local backend data service by running the code found here on my machine:

https://github.com/telerik/kendo-ui-demos-service

However, I'm stuck at what route on my local system replaces http://demos.telerik.com/kendo-ui/service/signalr/hubs

Would the local route be

var hubUrl = http://localhost:42471/hubs;

How do I set the route?

Thanks,

Ken

Konstantin Dikov
Telerik team
 answered on 02 May 2019
3 answers
1.1K+ views

I developed a Grid which displays a pop-up for updates. Popup Edit screen is a Custom template with a dropdown list that calls the controller to populate the dropdown. In this case, i am populating the prefixes. The is populated fine, but when I click on a row on the grid to edit an item, I need to pre-select the value in the drop-down. let's say if a particular row has a value of "Mr." as a prefix, I need it to be pre-selected in the popup .

 

If the use of a  @Html.EditorFor(model => model.Prefix), it perfectly populates the editor fine. This doesn't work for Dropdown.

 

The editor template is called MemberEdit and the code in it is as below:

<p></p><p>@model <g class="gr_ gr_98 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace" id="98" data-gr-id="98">Api</g>.<g class="gr_ gr_162 gr-alert gr_gramm gr_inline_cards gr_run_anim Punctuation multiReplace" id="162" data-gr-id="162">Common..</g>Models.WebUser<br><br>    <div class="row" style="margin-left:5px;"><br>        <div class="col-lg-2"><br>            @Html.LabelFor(model => model.Prefix)<br>            @*@Html.EditorFor(model => model.Prefix)*@<br>            @(Html.Kendo().DropDownList()<br>                      .Name("ddlPrefix")<br>                      .DataTextField("Prefix")<br>                      .DataValueField("PrefixKey")<br>                      .DataSource(source =><br>                      {<br>                          source.Read(read =><br>                          {<br>                              read.Action("ListCustomerPrefix", "Home"); //.Data("additionalPrefixData");<br>                          })<br>                          .ServerFiltering(true);<br>                      })<br>                      //  .Text(Model.Prefix)<br>                      .Value(Model.PrefixKey)<br>                      .AutoBind(false)<br>                      .HtmlAttributes(new { style = "width: 100%" })<br>            )<br>            @Html.ValidationMessageFor(model => model.Prefix)<br>        </div><br>    </div></p>


The Grid code is as shown below: 

1.  @(Html.Kendo().Grid<.Api.Common..Models.WebUser>()<br>            .Name("membersGrid")<br>            .Columns(columns =><br>            {<br>                columns.Command(command => { command.Edit(); command.Destroy().Text("Del"); }).Width("15%");<br>                columns.Bound(p => p.CST_KEY).Visible(false);<br>                columns.Bound(p => p.FullName).Width("20%").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains").SuggestionOperator(FilterType.Contains)));<br>                columns.Bound(p => p.Role).Width("25%").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains").SuggestionOperator(FilterType.Contains)));<br>                columns.Bound(p => p.Title).Width("20%").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains").SuggestionOperator(FilterType.Contains)));<br>                columns.Bound(p => p.EmailAddress).Width("20%").Filterable(ftb => ftb.Cell(cell => cell.Operator("contains").SuggestionOperator(FilterType.Contains)));<br>                columns.Bound(p => p.Prefix).Visible(false);<br>                columns.Bound(p => p.Suffix).Visible(false);<br>                columns.Bound(p => p.RoleKey).Visible(false);<br>                columns.Bound(p => p.OrganizationMemberKey).Visible(false);<br><br>            }).Filterable(filterable => filterable<br>              .Extra(false)<br>              .Operators(ops => ops<br>                  .ForString(str => str.Clear()<br>                       .Contains("Contains")<br>                       .StartsWith("Starts With")<br>                       .IsEqualTo("Is Equal To")<br>                       .IsNotEqualTo("Is Not Equal To")<br>                      )))<br>            .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("MemberEdit").Window(w => w.Title("Edit Employee").Width(1100)))<br>            .Pageable(pager => pager.AlwaysVisible(false).PageSizes(new List<object> { 5, 10, 15, 20 }))<br>            .Sortable()<br>            .Filterable(ftb => ftb.Mode(GridFilterMode.Row))<br>            .HtmlAttributes(new { style = "width:100%;" })<br>            .DataSource(dataSource => dataSource<br>                .Ajax()<br>                .PageSize(10)<br>                .Events(events => events.Error("error_handler"))<br>                .Model(model => model.Id(p => p.CST_KEY))<br>                .Read(read => read.Action("ListMembers", "Home"))<br>                .Update(update => update.Action("EditingPopup_Update", "Home"))<br>                .Model(model =><br>                {<br>                    model.Field(m => m.Title);<br>                    model.Field(m => m.Prefix);<br>                    model.Field(m => m.PrefixKey);<br>                    model.Field(m => m.Suffix);<br>                    model.Field(m => m.FirstName);<br>                    model.Field(m => m.MiddleName);<br>                    model.Field(m => m.LastName);<br>                    model.Field(m => m.OrganizationKey);<br>                    model.Field(m => m.FullName);<br>                    model.Field(m => m.CustomerId);<br>                    model.Field(m => m.OrganizationMemberKey);<br>                    model.Field(m => m.EmailAddress);<br>                    model.Field(m => m.CST_KEY);<br>                    model.Field(m => m.Role);<br>                    model.Field(m => m.RoleKey);<br>                    model.Field(m => m.RoleList).DefaultValue(new List<Aamva.Api.Common.WebSite.Models.WebUserRole>());<br>                }<br>                )<br>             )<br>    )

 

The Model is as below:

   public class WebUser<br>    {<br>        public string CST_KEY { get; set; }<br>        public string EmailAddress { get; set; }<br>        public string Prefix { get; set; }<br>        public string PrefixKey { get; set; }<br>        public string Suffix { get; set; }<br>        public string Title { get; set; }<br>        public string FirstName { get; set; }<br>        public string MiddleName { get; set; }<br>        public string LastName { get; set; }<br>        public string OrganizationKey { get; set; }<br>        public string OrganizationMemberKey { get; set; }<br>        public string OrganizationName { get; set; }<br>        public string Role { get; set; }<br>        public string RoleKey { get; set; }<br>        public List<WebUserRole> RoleList { get; set; }<br>   

}

 

The Model for Prefix is as below:

    public class WebUserPrefix<br>    {<br>        public string PrefixKey { get; set; }<br>        public string Prefix { get; set; }<br>    }

 

 

 

Preslav
Telerik team
 answered on 01 May 2019
3 answers
2.1K+ views

We are working on a Kendo UI with Kendo Listbox (asp.net MVC - https://demos.telerik.com/aspnet-mvc/listbox) but the example is for
@html.Kendo().ListBox() rather than having @html.Kendo.ListBoxFor() where @html.Kendo.ListBoxFor() allows for the model to be BindTo to selected items

Is there a way a ListBox can be used to bind to a model rather than an IEnumerable so that we can pass data back and forth via the model

Alex Hajigeorgieva
Telerik team
 answered on 29 Apr 2019
3 answers
812 views

Hi,

I'm having some problems when I try to format text when there is a span in the middle of the selected text. Below I've shown the before, after and expected HTML when I try to change the change the font size, for example, by highlighting a word on either side of my span as well as the span itself.

BEFORE:

<p>one two <span k-immutable="6qxG2g5C1I"></span> three four</p>

 

AFTER:

<p>one <span style="font-size:72pt;">two </span><span k-immutable="6qxG2g5C1I"></span><span style="font-size:72pt;"> three</span> four</p>

 

EXPECTED:

<p>one <span style="font-size:72pt;">two <span k-immutable="6qxG2g5C1I"></span> three</span> four</p>

 

We use the <span k-immutable="6qxG2g5C1I"> as a merge field so my question is this: is there any way to catch when font is changed through the toolbar (font-size, font-alignment, font-change, font-bold,etc) or is there a way to better wrap around the middle span so that it doesn't ignore the changes I've made?

 

Dimitar
Telerik team
 answered on 29 Apr 2019
12 answers
413 views

I have model as

    public class ProductViewModel
    {
        public int ID { get; set; }
        public string ProductName { get; set; }
        public double? Price { get; set; }
    }

 

The controller is

 public ActionResult Products([DataSourceRequest]DataSourceRequest request)
        {
            List<Models.ProductViewModel> lst = new List<Models.ProductViewModel>();
            lst = GetGridData().ToList();

            DataSourceResult result = lst.ToDataSourceResult(request, p => new Models.Product 
            {
                ID = p.ID,
                ProductName = p.ProductName,
                Price = p.Price 
            });
            return Json(result, JsonRequestBehavior.AllowGet);
        }

 

       public IEnumerable<Models.ProductViewModel> GetGridData()
        {
            List<Models.ProductViewModel> objProducts = new List<Models.ProductViewModel>();

            for (int i = 1; i<= 10; i++)
            {
                objProducts.Add(new Models.ProductViewModel() { ID = i, ProductName = "Prod" + i.ToString(), Price = i * 10 });
            }
            return objProducts.ToList().AsEnumerable();
        }

 

cshtml

@model TelerikMvcApp1.Models.ProductViewModel
@using System.Web.Optimization
@using Kendo.Mvc.UI
@using Kendo.Mvc.Extensions

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}


<div>
    @(Html.Kendo().Grid<TelerikMvcApp1.Models.ProductViewModel>()
                                        .Name("grid")
                                        .DataSource(dataSource => dataSource //Configure the Grid data source.
                                            .Ajax() //Specify that Ajax binding is used.

                                            .ServerOperation(false) //Paging, sorting, filtering, and grouping will be done client-side.
                                            .Read(read => read
                                                .Action("About", "Home")) //Set the action method which will return the data in JSON format.
                                                                          //.Data("productsReadData") //Specify the JavaScript function which will return the data.
                                        )
                                        .Columns(columns =>
                                        {
                                            //Create a column bound to the ProductID property.
                                            columns.Bound(P => P.ID).Title("Product ID");
                                            //Create a column bound to the ProductName property.
                                            columns.Bound(P => P.ProductName).Title("Product Name").Width(130);
                                            //Create a column bound to the UnitsInStock property.
                                            columns.Bound(P => P.Price);
                                        })
                                        .Pageable() // Enable paging
                                        .Sortable() // Enable sorting
                                        .HtmlAttributes(new { style = "height: 550px; width:300px;" })
    )
</div>

 

 

 

 

When I run the application, Grid is not displayed and the output is

{"Data":[{"ID":1,"ProductName":"Prod1","Price":10},{"ID":2,"ProductName":"Prod2","Price":20},{"ID":3,"ProductName":"Prod3","Price":30},{"ID":4,"ProductName":"Prod4","Price":40},{"ID":5,"ProductName":"Prod5","Price":50},{"ID":6,"ProductName":"Prod6","Price":60},{"ID":7,"ProductName":"Prod7","Price":70},{"ID":8,"ProductName":"Prod8","Price":80},{"ID":9,"ProductName":"Prod9","Price":90},{"ID":10,"ProductName":"Prod10","Price":100}],"Total":10,"AggregateResults":null,"Errors":null}

Alex Hajigeorgieva
Telerik team
 answered on 29 Apr 2019
1 answer
498 views

Hi I am struggling to figure this out...I am trying to pass additional data on the call.  The id that treeview comes up with is always there and correct.  But my roleid is always null.  And the RoleId is valid number.  Running out of places to look so I figured I post...

 

@(Html.Kendo().TreeView()
                                .Name("permissionList")
                                .Checkboxes(true)
                                .DataTextField("name")
                                .DataSource(dataSource => dataSource
                                    .Read(read => read.Action("permissions", "roles", new { RoleId = @Model.RoleId}))
                                )
                    )

 

Controller

        [HttpGet]
        [Route("permissions")]
        [Route("permissions/{id}/{RoleId}")]
        public JsonResult Permissions(int? id, int? RoleId)
        {
            var roleFormMgr = new RoleFormMgr(StateMgmt);
            var roleEntity = roleFormMgr.GetRole(RoleId.GetValueOrDefault());
            var roleFormVM = roleFormMgr.PopulateView(Mapper.Map<RoleForm>(roleEntity));
            var permissions = roleFormVM.RolePermissionList.Where(p => id.HasValue ? p.parentId == id : (id == null && p.parentId == 0)).ToList();
            return Json(permissions, JsonRequestBehavior.AllowGet);
        }

Dimitar
Telerik team
 answered on 29 Apr 2019
1 answer
414 views

 

How can I limit the editable text to a positive number .

 

My Grid is as follows:

 

    @(Html.Kendo().Grid<TelerikMvcApp1.Models.ProductViewModel>()
                                                                .Name("Grid")
                                                                .DataSource(dataSource => dataSource //Configure the Grid data source.
                                                                    .Ajax() //Specify that Ajax binding is used.
                                                                    .Batch(true)

                                                                    .ServerOperation(false) //Paging, sorting, filtering, and grouping will be done client-side.
                                                                    .Read(read => read
                                                                    .Action("Products", "Home")) //Set the action method which will return the data in JSON format.
                                                                                                 //.Data("productsReadData") //Specify the JavaScript function which will return the data.
                                                                    .Model(model => model.Id(p => p.Id))
                                                                )
                                                                .Columns(columns =>
                                                                {
                                                                    columns.Bound(P => P.Id).Title("ID").Width(20).Editable("NoEditing").HtmlAttributes(new { style = "text-align:center" }).HeaderHtmlAttributes(new { style = "text-align:center" });
                                                                    columns.Bound(P => P.ProductName).Title("Product Name").Width(40).Editable("NoEditing").HtmlAttributes(new { style = "text-align:center" }).HeaderHtmlAttributes(new { style = "text-align:center" });
                                                                    columns.Bound(P => P.Price).Editable("AllowEditing").HtmlAttributes(new { style = "text-align:center" }).HeaderHtmlAttributes(new { style = "text-align:center" }).Width(30); //.ClientTemplate("<input type=\"number\" value=#= Inches # min=\"0\" max=\"11\" step=\"1\" ></input>");

                                                    })
                                                                .Editable(editable => editable.Mode(GridEditMode.InCell))
                                                                //.Pageable() // Enable paging
                                                                .Sortable() // Enable sorting
                                                                .Scrollable()
                                                                .Filterable()
                                                                .Navigatable()
                                                                .HtmlAttributes(new { style = "height: 300px;" })
    )

 

<script>
    function AllowEditing(dataItem) {
        return true;
    }

    function NoEditing(dataItem) {
        return false;
    }

 

I tried adding a ClientTemplate which is commented above. But that didn't work.

 

Tsvetomir
Telerik team
 answered on 26 Apr 2019
5 answers
1.4K+ views
Hi,

I am using kendo grid and trying to set  filters beforehand when grid is constructed. I am setting the filters for datasource. The problem is that when grid is rendered I always encounter the problem, exception is throws. Call stack is following.

System.ArgumentException was unhandled by user code
  HResult=-2147024809
  Message=Provided expression should have string type
Parameter name: stringExpression
  Source=Kendo.Mvc
  ParamName=stringExpression
  StackTrace:
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.ExpressionFactory.LiftStringExpressionToEmpty(Expression stringExpression)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterOperatorExtensions.GenerateToLowerCall(Expression stringExpression, Boolean liftMemberAccess)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterOperatorExtensions.GenerateCaseInsensitiveStringMethodCall(MethodInfo methodInfo, Expression left, Expression right, Boolean liftMemberAccess)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterOperatorExtensions.GenerateStartsWith(Expression left, Expression right, Boolean liftMemberAccess)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterOperatorExtensions.CreateExpression(FilterOperator filterOperator, Expression left, Expression right, Boolean liftMemberAccess)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterDescriptorExpressionBuilder.CreateBodyExpression()
       at Kendo.Mvc.FilterDescriptor.CreateFilterExpression(ParameterExpression parameterExpression)
       at Kendo.Mvc.FilterDescriptorBase.CreateFilterExpression(Expression instance)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterDescriptorCollectionExpressionBuilder.CreateBodyExpression()
       at Kendo.Mvc.CompositeFilterDescriptor.CreateFilterExpression(ParameterExpression parameterExpression)
       at Kendo.Mvc.FilterDescriptorBase.CreateFilterExpression(Expression instance)
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterDescriptorCollectionExpressionBuilder.CreateBodyExpression()
       at Kendo.Mvc.Infrastructure.Implementation.Expressions.FilterExpressionBuilder.CreateFilterExpression()
       at Kendo.Mvc.Extensions.QueryableExtensions.Where(IQueryable source, IEnumerable`1 filterDescriptors)
       at Kendo.Mvc.Extensions.QueryableExtensions.CreateDataSourceResult[TModel,TResult](IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState, Func`2 selector)
       at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable queryable, DataSourceRequest request, ModelStateDictionary modelState)
       at Kendo.Mvc.Extensions.QueryableExtensions.ToDataSourceResult(IQueryable enumerable, DataSourceRequest request)
       at Kendo.Mvc.UI.DataSource.Process(DataSourceRequest request, Boolean processData)
       at Kendo.Mvc.UI.Grid`1.ProcessDataSource()
       at Kendo.Mvc.UI.Grid`1.WriteHtml(HtmlTextWriter writer)
       at Kendo.Mvc.UI.WidgetBase.Render()
       at Kendo.Mvc.UI.Fluent.WidgetBuilderBase`2.Render()
       at xxxxxxxx.Execute() in xxxxxxxx.cshtml:line xx
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
       at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
       at RazorGenerator.Mvc.PrecompiledMvcView.Render(ViewContext viewContext, TextWriter writer)
       at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
  InnerException:

Any ideas how to proceed?
Georgi
Telerik team
 answered on 26 Apr 2019
3 answers
119 views

In the demos I was able to see something like 

.Format("MMMM yyyy")

But I have been unable to find the valid values for the string input or documentation on the Format method itself. I am obviously looking in the wrong place. Where should I look?

Thank you.

Eyup
Telerik team
 answered on 25 Apr 2019
Narrow your results
Selected tags
Tags
Grid
General Discussions
Scheduler
DropDownList
Chart
Editor
TreeView
DatePicker
Upload
ComboBox
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
MultiColumnComboBox
Dialog
DropDownTree
Checkbox
Slider
Switch
Notification
ListView (Mobile)
Pager
Accessibility
ColorPicker
DateRangePicker
Wizard
Security
Styling
Chat
MediaPlayer
TileLayout
DateInput
Drawer
SplitView
Barcode
ButtonGroup (Mobile)
Drawer (Mobile)
ImageEditor
RadioGroup
Sparkline
Stepper
TabStrip (Mobile)
GridLayout
Template
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
+? more
Top users last month
Edmond
Top achievements
Rank 1
Iron
fabrizio
Top achievements
Rank 2
Iron
Veteran
RobMarz
Top achievements
Rank 2
Iron
Fakhrul
Top achievements
Rank 1
Iron
Tejas
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Edmond
Top achievements
Rank 1
Iron
fabrizio
Top achievements
Rank 2
Iron
Veteran
RobMarz
Top achievements
Rank 2
Iron
Fakhrul
Top achievements
Rank 1
Iron
Tejas
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?