Telerik Forums
UI for ASP.NET MVC Forum
4 answers
145 views

I've noticed then in new version (2016.1.112) of component KendoDropDownList was changed the logic of the change event. In previous version (2015. 3.1111) in the change function I don't have to return the proper value. Below is the razor code that works fine.

...................
                <tr>
                    <td class="required-label">
                        @Html.LabelFor(m => m.FolderId)
                    </td>
                    <td>
                        @(Html.Kendo().DropDownList().Name("FolderId")
                              .HtmlAttributes(new { @class = "select-list" })
                              .OptionLabel("-- WYBIERZ RODZAJ ZGŁOSZENIA --")
                              .DataTextField("Description")
                              .DataValueField("Symbol")
                              .DataSource(source => source.Read(read => read.Action("GetFolders", "Zgloszenia"))))
                    </td>
                </tr>
                <tr>
                    <td class="required-label">
                        @Html.LabelFor(m => m.Subject)
                    </td>
                    <td>
                        @Html.Kendo().TextBoxFor(m => m.Subject).HtmlAttributes(new { @class = "textboxlong" })
                    </td>
                </tr>
                <tr>
                    <td>
                        @Html.LabelFor(m => m.ForeignCode)
                    </td>
                    <td>
                        @Html.Kendo().TextBoxFor(m => m.ForeignCode)
                    </td>
                </tr>
                <tr>
                    <td class="required-label">
                        @Html.LabelFor(m => m.ProductId)
                    </td>
                    <td>
                        @(Html.Kendo().DropDownList().Name("ProductId")
                              .HtmlAttributes(new { @class = "select-list", data_val = "true", data_val_required = "Musisz wybrać odpowiedni program z listy" })
                              .OptionLabel("-- Wybierz produkt, którego dotyczy zgłoszenie --")
                              .DataTextField("DescriptionValid")
                              .DataValueField("Symbol")
                              .DataSource(source => source.Read(read => read.Action("GetProducts", "Zgloszenia").Data("filterProducts"))
                                  .ServerFiltering(true))
                              .Enable(false)
                              .AutoBind(true)
                              .CascadeFrom("FolderId")
                              )
                    </td>
                </tr>
..................
<script>
    $(function () {
        var folderObj = $("#FolderId");
        if (folderObj) {
            folderObj.data("kendoDropDownList").setOptions({
                change: function (e) {
                    var folderVal = folderObj.val();
                    if (folderVal == "ZSER") {
                        $("#versionLabel").removeClass("required-label");
                        $("#Version").removeAttr("data-val-required");
                    } else {
                        $("#versionLabel").addClass("required-label");
                        $("#Version").attr("data-val-required", "Podanie wersji programu jest wymagane");
                    }
                }
           });
        }
    });
</script>
 

 In the new version it turned out that my dropdownlist doesn't work, operator cannot choose the item. Exactly after clicking on, it drop down, but after choosing the item it still remains the previous one. It looks like someone has disabled the control. I've found that if add to my function return value, everything will be OK.  My question is if this logic will be developed in the future? Should I always remember to return the proper value? Below is new version of this function.

<script>
    $(function () {
        var folderObj = $("#FolderId");
        if (folderObj) {
            folderObj.data("kendoDropDownList").setOptions({
                change: function (e) {
                    var folderVal = folderObj.val();
                    if (folderVal == "ZSER") {
                        $("#versionLabel").removeClass("required-label");
                        $("#Version").removeAttr("data-val-required");
                    } else {
                        $("#versionLabel").addClass("required-label");
                        $("#Version").attr("data-val-required", "Podanie wersji programu jest wymagane");
                    }
                }
                return folderVal;
            });
        }
    });
</script>

Janusz
Top achievements
Rank 1
 answered on 19 Feb 2016
1 answer
222 views

I'm having to dynamically create instances of the kenod dropdownlist and I have it working fine except I need to know what the equivalent syntax for defining the datasource.

 

Here is the razor server-side syntax:

 

@(Html.Kendo().DropDownList()
                        .Name("lineItemTypeCode")
                        .OptionLabel("..........")
                        .HtmlAttributes(new { style = "width:100%", @class = "itemTypeClass", required = "required" })
                        .DataValueField("Code")
                        .DataTextField("Name")
                        .DataSource(source => { source.Read(read => { read.Action("GetItemTypes", "RequestPONumber").Data("GetSelectedLocation"); }); })
      )

Action is GetItemTypes

Controller is RequestPONumber

Here is my client-side:

var newItemTypeDdl = $("#itemTypeddl" + poLinesCount).kendoDropDownList(
            {
                dataTextField: 'Name',
                dataValueField: 'Code',
                dataSource: ??????,
                optionLabel: "..........",
            });

 

Georgi Krustev
Telerik team
 answered on 19 Feb 2016
1 answer
94 views

Hello everyone.

Setup

I am using Telerik MVC Datepicker control to allow the user to select a date.

My date range is between the beginning of 1997 to current day.

The list of Valid dates are in a database and can be called via Stored Procedure.

My current list of valid dates number about 3500 and most represent end of month dates (though not always).

I want to disable all the other dates in my date picker so that the user only has access to dates that have data associated with them.

Is there a way to use the DisableDates feature of the Datepicker to do this?

 

Thanks

Corey

Kiril Nikolov
Telerik team
 answered on 19 Feb 2016
1 answer
54 views

I'm trying to get my chart title to be dynamic based on data in my chart.  However, since changing my ViewModel, I'm not getting any data in the chart to show up.  Here's my code so far.
ViewModel:

public class TargetZeroDetail
    {
        public String Title { get; set; }
        public List<TargetZeroDetails> Details { get; set; }
    }
 
    public class TargetZeroDetails
    {
        public DateTime DetailDate { get; set; }
        public String ShortDetailDate
        {
            get
            {
                return String.Format("{0:M/dd}", DetailDate);
            }
        }
        public Decimal Score { get; set; }
    }
 

 Controller:

public ActionResult Index()
{
    return View();
}
     
public ActionResult GetChartData([DataSourceRequest] DataSourceRequest request, DateTime passedDate)
{
    TargetZeroDetail data = Utility.GetTargetZeroData(passedDate);
    return Json(data, JsonRequestBehavior.AllowGet);
}

View: 

 

@model Utilities.TargetZeroDetail
 
<head>
    <link href="~/Content/kendo/2015.3.1111/kendo.common.min.css" rel="stylesheet" />
    <link href="~/Content/kendo/2015.3.1111/kendo.material.min.css" rel="stylesheet" />
    <link href="~/Content/kendo/2015.3.1111/kendo.blueopal.min.css" rel="stylesheet" />
    <script src="~/Scripts/kendo/2015.3.1111/jquery.min.js"></script>
    <script src="~/Scripts/kendo/2015.3.1111/kendo.all.min.js"></script>
    <script src="~/Scripts/kendo/2015.3.1111/kendo.aspnetmvc.min.js"></script>
</head>
<body>
    @{
        DateTime dateToPass = Convert.ToDateTime(Request.QueryString["date"]);
        if (dateToPass == DateTime.MinValue)
        {
            dateToPass = new DateTime(DateTime.Now.Date.Year, DateTime.Now.Month, 1);
        }
    }
    <table>
        <tr>
            <td valign="top">
                @(Html.Kendo().Button()
                    .Name("prevButton")
                    .Content("Previous Month")
                    .Icon("expand-w")
                    .Events(ev => ev.Click("onPrevClick"))
                )
            </td>
            <td>
                <div id="example">
                    <div id="chart">
                        @(Html.Kendo().Chart(Model.Details)
                            .Name("targetZeroChart")
                            .DataSource(dataSource => dataSource
                                .Read(read => read.Action("GetChartData", "Home", new { passedDate = dateToPass }))
                            )
                            .ChartArea(ca => ca.Height(690).Width(690))
                            .Title(Model.Title)
                            .Legend(false)
                            .SeriesDefaults(series => series
                                .RadarLine()
                                .Width(0)
                                .Markers(markers => markers
                                    .Visible(true)
                                    .Background("blue")
                                    .Border(border => border
                                        .Width(2)
                                        .Color("blue")
                                    )
                                )
                                .Tooltip(tooltip => tooltip
                                    .Visible(true)
                                    .Background("white")
                                )
                            )
                            .Series(series => series
                                .RadarLine(d => d.Score)
                            )
                            .CategoryAxis(axis => axis
                                .Categories(m => m.ShortDetailDate)
                            )
                            .ValueAxis(axis => axis.Numeric()
                                .Labels(l => l.Visible(false))
                                .Line(l => l.Visible(false))
                                .PlotBands(pb =>
                                {
                                    pb.Add().Color("green").From(0).To(1).Opacity(0.5);
                                    pb.Add().Color("yellow").From(1).To(2).Opacity(0.5);
                                    pb.Add().Color("gold").From(2).To(3).Opacity(0.5);
                                    pb.Add().Color("orange").From(3).To(4).Opacity(0.5);
                                    pb.Add().Color("red").From(4).To(10).Opacity(0.5);
                                })
                            )
                        )
                    </div>
                </div>
            </td>
            <td valign="top">
                @(Html.Kendo().Button()
                    .Name("nextButton")
                    .Content("Next Month")
                    .Icon("expand")
                    .Events(ev => ev.Click("onNextClick"))
                    .HtmlAttributes(new
                    {
                        @class = "right-icon"
                    })
                )
            </td>
        </tr>
    </table>
    <style>
        .right-icon .km-button .km-icon {
            float: right;
            margin-left: 0.3em;
        }
    </style>
    <script>
        function onPrevClick(e) {
            var newAddress = getPathFromUrl(window.location.href);
            if (newAddress.indexOf("Home") < 0) {
                newAddress += "Home/Index";
            }
            newAddress += "?date=@dateToPass.AddMonths(-1).Date.ToShortDateString()";
            window.location.replace(newAddress);
        }
 
        function onNextClick(e) {
            var newAddress = getPathFromUrl(window.location.href);
            if (newAddress.indexOf("Home") < 0) {
                newAddress += "Home/Index";
            }
            newAddress += "?date=@dateToPass.AddMonths(1).Date.ToShortDateString()";
            window.location.replace(newAddress);
        }
 
        function getPathFromUrl(url) {
            return url.split(/[?#]/)[0];
        }
 
        $("#chart").css("width", "700px").css("height", "700px")
                    .data("kendoChart");
    </script>
</body>

I'm assuming that since my initial call to the controller simply returns an empty View, that's why this is happening.  However if I were to make the call to get data to return to my view initially, it still doesn't show up.

What am I missing here?

T. Tsonev
Telerik team
 answered on 19 Feb 2016
3 answers
316 views
Hi 

I Am Using Telerik reporting DLL for Export PDF .

But When I export data With Unicode Character Not Support in PDF.

for E.X => Original String  ==>  PѐrustamismэnoЁcoToPat 520
                    In  PDF               ==>  P􀀀rustamismэnoЁcoToPat 520

 

unicode Character not supported.


please help us

Thanks in advance

Stef
Telerik team
 answered on 18 Feb 2016
1 answer
267 views

I am at a disadvantage because not only am I new to Kendo UI, but I am new to MVC as well.

Using the Save method inside Kendo UI Grid, I ALSO need to access a selected value from a Kendo Drop Down List.

For the life of me, I cannot figure out how to access the value.

Can someone assist? 

Here is some code:

Drop Down List:

@(Html.Kendo().DropDownListFor(m => m.SelectedPrinter)
.Name("Printers")
.HtmlAttributes(new { style = "width:100%" })
.OptionLabel("Select printer...")
.DataTextField("Name")
.DataValueField("ID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetCascadePrinters", "Home")
.Data("filterProducts");
})
.ServerFiltering(true);
})
.Enable(false)
.AutoBind(false)
.CascadeFrom("Locations")
)

Grid:

.DataSource(dataSource => dataSource.Ajax()
.Model(
model =>
{
model.Field(f => f.UserName).Editable(false);
model.Field(f => f.FirstName).Editable(false);
model.Field(f => f.LastName).Editable(false);
model.Field(f => f.PrincipalCreationDate).Editable(false);
model.Id(p => p.UserName);
}
)
.Read("Editing_Read", "Home")
.Update("Editing_Update", "Home")
.ServerOperation(false)
.Batch(true)

Controller:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Editing_Update([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<User> usr, UsersViewModel uvm, string SelectedPrinter)
{

// Check if model is valid
// Get User from UserID
// Build Trigger File
// Send to Bartender Trigger Directory
if (usr != null && ModelState.IsValid)
{
foreach (var product in usr)
{
// productService.Update(product);
}
}
return Json(usr.ToDataSourceResult(request, ModelState));
}

Any Help is appreciated.

Danail Vasilev
Telerik team
 answered on 18 Feb 2016
1 answer
81 views
Hi, I know this is maybe a strange question but I'd like to inquire about the behavior when sorting on a column where all values are the same.  I would expect that nothing changes, however that is not the case,  rows seem to sort randomly.  What sort is being applied in this case?  The interesting thing is I have two columns like that, and they both get sorted in the exact same order, so there is some logic I just can't tell what it is.  The behavior should be that if column values are all the same no sort is applied (this is how the silver light grid which I'm migrating from works). 
Angel Petrov
Telerik team
 answered on 18 Feb 2016
1 answer
209 views

Hi Team,

 

I am using Kendo MVC Grid control with model binding, and in jquery document.ready function i am updating the grid height manually according to page height.

Below is my code

<div id="div-shipmentsgrid-wrapper" style="width:100%; height:800px;">
            @(Html.Kendo().Grid(Model) // Bind the grid to the Model property of the view
            .Name("grdshipmentssummary")
            .Columns(columns =>
            {
                columns.Bound(p => p.PROJECTCODE).Title("Sl").Width(55);
                columns.Bound(p => p.PRODUCTCODE).Title("Product Code").Width(150);
                columns.Bound(p => p.CUSTOMERCODE).Title("Customer").Width(200);
                columns.Bound(p => p.PROJECTCODE).Title("Project Code").Width(150);
                columns.Bound(p => p.SHIPDESCR).Title("Shipping Description").Width(250);
                columns.Bound(p => p.PERCENTAGECOMP).Title("% Comp").Width(100);
                columns.Bound(p => p.STATUSDESCR).Title("Status").Width(100);
                columns.Bound(p => p.COMMITTED).Title("Commit").Format("{0:yyyy-MM-dd}").Width(120);
            })
                .Pageable()
            .Sortable()
                .Filterable(filter => filter.Extra(false))
            .Resizable(resize => resize.Columns(true)).Filterable(filter => filter.Extra(false))
            .Resizable(resize => resize.Columns(true))
                .Scrollable()
            .Selectable(selectable => selectable
            .Mode(GridSelectionMode.Single)
            .Type(GridSelectionType.Row))
                .Events(events => events.Change("onShipmentSummarygridRowChange").DataBound("onDataBound").DataBinding("onDataBinding"))
            .DataSource(dataSource => dataSource
                .Server()
                .Model(model => model.Id(p => p.ID))
            .PageSize((int)ViewBag.PageSize)
                )
            )
            @*<div id="grdshipmentssummary"></div>*@
        </div>

<script type="text/javascript">
    $(document).ready(function () {

       var exHeight = 185;//navbar footer and spaces
        $("#div-shipmentsgrid-wrapper").css("height", parseInt($(window).height().toString().replace("px", "")) - exHeight);
        $("#div-shipmentsgrid-wrapper div.k-grid-content").css("height", parseInt($("#div-shipmentsgrid-wrapper").css("height").toString().replace("px", "")) - 60);

    });

</script>

 Above code is working fine and setting grid height correctly.

But as i am using model binding, page is taking time to load and grid as well. Meanwhile between pageload and document.ready grid is loading with half height of the page. My question is, is there any grid preload event where i can find the div.k-grid-content.

 

Plamen
Telerik team
 answered on 18 Feb 2016
2 answers
184 views

Hi

 I'm attempting to wire up a Kendo grid to a web api.  I found two great examples on the site: here and here.

 Basically says configure the data source like this:

 

.DataSource(dataSource => dataSource
            .WebApi()
            .Model(model =>
            {
                model.Id(product => product.ProductID); // Specify the property which is the unique identifier of the model
                model.Field(product => product.ProductID).Editable(false); // Make the ProductID property not editable
            })
            .Create(create => create.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Products" }))) // Action invoked when the user saves a new data item
            .Read(read => read.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Products" }))) // Action invoked when the grid needs data
            .Update(update => update.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Products", id = "{0}" })))  // Action invoked when the user saves an updated data item
            .Destroy(destroy => destroy.Url(Url.HttpRouteUrl("DefaultApi", new { controller = "Products", id = "{0}" }))) // Action invoked when the user removes a data item
      )

 

 I'm using version 2016.1.112 and .WebApi() isn't available.  Any idea how the hook the data source to a web api without it?

Caleb Sandfort
Top achievements
Rank 1
 answered on 17 Feb 2016
1 answer
94 views

Hi,

     I am Evaluating telerik Kendo Grid for MVC.

I have dynamic Datatable which I would like to bind to the grid.I can able to bind the grid but unable to do paging,filtering etc.

Once I go to next page,the grid collapase to empty with page numbers set to 0.

 

     @(Html.Kendo().Grid<System.Data.DataTable>().Name("Grid")
            .DataSource(d => d.Ajax().PageSize(2)
             .Read(r => r.Action("ReadData", "Home"))
                )

        .Columns(col =>
        {
            foreach (System.Data.DataColumn column in Model.Columns)
            {
                col.Bound(column.ColumnName);
            }

        }).Sortable()
        .Filterable()
        .Pageable()

Dimiter Madjarov
Telerik team
 answered on 17 Feb 2016
Narrow your results
Selected tags
Tags
+? more
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Bronze
Jianxian
Top achievements
Rank 1
Iron
Marco
Top achievements
Rank 3
Iron
Iron
Iron
Jim
Top achievements
Rank 2
Iron
Iron
Nurik
Top achievements
Rank 2
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?