Telerik Forums
UI for ASP.NET MVC Forum
1 answer
681 views

I have a two Switch widgets on my page and have a change event setup for one of them. In the change function i'm trying to get a reference to the other switch on the page to see if it is checked. All I get is 'Undefined'.

<div class="col-md-6">
        <div class="form-group pt-2">
            @(Html.Kendo().Switch()
                  .Name("Immediate")
                  .Messages(c => c.Checked("YES").Unchecked("NO"))
                  )
            <label for="reportable">Save changes immediately</label>
        </div>
        <div class="form-group">
            @(Html.Kendo().Switch()
                  .Name("Scheduled")
                  .Messages(c => c.Checked("YES").Unchecked("NO"))
                  .Events(e => e.Change("onScheduledChange"))
                  )
            <label for="history">Schedule/Back-Date Changes</label>
        </div>
    </div>

and here's my JS:

<script>
    function onScheduledChange(e) {
        var immediateSwitch = $("#Immediate").checked;
        if (e.checked) {
            //alert("scheduled is checked");
            alert(immediateSwitch);
        }
    }
</script>

immediateSwitch returns undefined.

I've also tried this:

<script>
    function onScheduledChange(e) {
        var immediateSwitch = $("#Immediate").data("kendoSwitch");
        if (e.checked) {
            //alert("scheduled is checked");
            alert(immediateSwitch.checked);
        }
    }
</script>

 

and got the same results. How do you get a reference to another Switch on the page??????

 

 

 

Preslav
Telerik team
 answered on 06 May 2019
4 answers
1.3K+ views
Hi there,


I just moved from Telerik MVC to Kendo. Quite a learning curve.

I'm having a strange problem, where I have set sort on the DataSource, the data being sorted correctly, just the sort icon doesn't show up on the column header, see attached thumbnail, .

javascript
standardGrid.dataSource.sort({ field: "ProjectName", dir: "dsc" });

Grid
@(Html.Kendo()
.Grid<CorporateSys.Data.GetProjectsByIdBusinessUnitIdsUserIdTagged_Result>()
.Name("ProjectStandardGrid")
.HtmlAttributes(new { style = "display:inline-block; height:100%; clear:both;" })
.Columns(columns =>
{
    columns.Bound(c => c.ProjectId).Hidden();
    columns.Bound(c => c.ProjectName);
    columns.Bound(c => c.ProjectType);
})
.Filterable()   
.Groupable()
.Sortable()
.DataSource(ds => ds.Ajax()
    .Read("GetJobs", "Job", new { isBau = Model.IsBau, clientId = Model.ClientId })
                                    .ServerOperation(true)
    .PageSize(20))
    .Events(events=>events.DataBound("OnStandardGridDataBound")) 
.Pageable()
)


I tried to hack the sort icon in databound event as following. After grid loaded, I click on column header, I always get two sort icons, see attached 'duplicate sort icons'. I tried to append "<span class='k-icon k-i-arrow-n'></span>",  the icon does not show. I tried "<span class='k-icon'></span>", but it displays two icons.

Hack in databound event
function OnStandardGridDataBound(e) {
    var grid = $("#ProjectStandardGrid").data("kendoGrid");
 
    var th = grid.thead.find(".k-link");
 
    th.find('span').remove();
 
    var sortSettings = grid.dataSource._sort;
 
    if (sortSettings != "" && sortSettings != null) {
        for (var i = 0; i < sortSettings.length; i++) {
            var sort = sortSettings[i];
 
            var thSort = grid.thead.find("th[data-field='" + sort.field + "'] .k-link");
 
            if (sort.dir == "dsc") {
                //thSort.append("<span class='k-icon k-i-arrow-n'></span>"); //k-i-arrow-s
 
                thSort.append("<span class='k-icon'></span>"); //k-i-arrow-s
       
            } else if (sort.dir == "asc") {
 
                thSort.append("<span class='k-icon'></span>"); //k-i-arrow-s
            }
        }
    }

any suggestion?

thanks in advance


regards
Jerry
Christos
Top achievements
Rank 1
 answered on 05 May 2019
2 answers
372 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
292 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.2K+ 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
876 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
448 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
530 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
470 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
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
LLM Kit
+? 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?