Telerik Forums
Kendo UI for jQuery Forum
5 answers
343 views

Hi team,

About the editor's image browser upload service with imageBrowser.transport.uploadUrl : is there a possibility to set the saveField like it's possible with the upload widget ? Seems the default name is "file" !

 

Content-Disposition: form-data; name="file"; filename="xxx.jpg"

Content-Type: image/jpeg

 

Best regards,

Laurent.

Aleksandar
Telerik team
 answered on 28 Jan 2020
2 answers
115 views

I have a grid with a Popup upon edit, but I only want to show 1 or 2 fields in the popup not all of the fields from the selected row, is that possible?

 

Thanks!

Clayton
Top achievements
Rank 2
 answered on 27 Jan 2020
4 answers
399 views

I have a kendoListBox with 12,000 items. This is connected with another kendoListBox and has draggable enabled. Each listbox item has a template applied. The listbox is inside of a modal. When I click a button to open the modal there is a 3 second delay for the modal to open. Then when I try to drag an item or click the arrow buttons to move the item to the opposite list there is another 3 second delay before anything happens. The issue occurred when I changed from a list with only a couple hundred items to this large list. I had this problem with some dropdown boxes and fixed those with virtualization but virtualization does not appear to be available or work here. How do I increase performance so that these components are usable?

<div id="baseModal">
    <div class="modal-content">
        <div class="modal-header">
            <div id="baseModalTitle" class="modal-title">My Modal</div>
        </div>
        <div class="modal-body">
            <div id="exceptions" class="kendo-dnd-component">
                <div class="dnd-list-boxes">
                    <div class="available-options-container">
                        <label for="availableItems">Applies To</label>
                        <span class="k-list-filter">
                            <input id="availableItemsSearchBox" class="k-textbox"><span class="k-icon k-i-zoom"></span>
                        </span>
                        <select id="availableItems" class="browser-default"></select>
                    </div>
                    <div class="selected-options-container">
                        <label for="selectedItems">Excludes</label>
                        <span class="k-list-filter">
                            <input id="selectedItemsSearchBox" class="k-textbox"><span class="k-icon k-i-zoom"></span>
                        </span>
                        <select id="selectedItems" class="browser-default"></select>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <div class="right-align">
            <button type="button" class="modal-close waves-effect btn-flat">Cancel</button>
            <button type="button" class="btn waves-effect ">Accept</button>
        </div>
    </div>
</div>
 
<script>
function createItemsDragLists() {
    // List Boxes
    $("#availableItemsSearchBox").on("input", function (e) {
        var listBox = $("#availableItems").getKendoListBox();
        var sarchString = $(this).val();
 
        listBox.dataSource.filter({
            logic: "or",
            filters: [
                { field: "itemID", operator: "contains", value: sarchString },
                { field: "itemName", operator: "contains", value: sarchString }
            ]
        });
    });
 
    $("#selectedItemsSearchBox").on("input", function (e) {
        var listBox = $("#selectedItems").getKendoListBox();
        var sarchString = $(this).val();
 
        listBox.dataSource.filter({
            logic: "or",
            filters: [
                { field: "itemID", operator: "contains", value: sarchString },
                { field: "itemName", operator: "contains", value: sarchString }
            ]
        });
    });
 
    $("#availableItems").kendoListBox({
        connectWith: "selectedItems",
        draggable: true,
        autoScroll: true,
        dropSources: ["selectedItems"],
        toolbar: {
            position: "right",
            tools: ["transferTo", "transferFrom", "transferAllTo", "transferAllFrom"]
        },
        selectable: "multiple",
        dataSource: items,
        template: "<span class='listItemID'>#: data.itemID #</span><span class='listItemName'>#: data.itemName#</span>",
        valueTemplate: "#: itemName #",
        dataTextField: "itemName",
        dataValueField: "itemID"
    });
 
    $("#selectedItems").kendoListBox({
        connectWith: "availableItems",
        draggable: {
            placeholder: function (element) {
                return element.clone().css({
                    "opacity": 0.3,
                    "border": "1px dashed #000000"
                });
            }
        },
        dropSources: ["availableItems"],
        selectable: "multiple",
        template: "<span class='listItemID'>#: data.itemID #</span><span class='listItemName'>#: data.itemName#</span>",
        valueTemplate: "#: itemName #",
        dataTextField: "itemName",
        dataValueField: "itemID"
    });
}
</script>

 

Lee
Top achievements
Rank 2
Bronze
Bronze
Bronze
 answered on 27 Jan 2020
1 answer
92 views

 I have a grid that shows data from an uploaded file, the user can delete rows that do now want to upload to the database. If I allow this, then the save/create pass an empty datasource object to my create method in the controller. Is it possible to allow for row deletion and pass the remaining data to my controller so they can all be inserted into the table? 

 

 

Veselin Tsvetanov
Telerik team
 answered on 27 Jan 2020
5 answers
4.8K+ views

Hello.

I'm having a problem implementing the following scenario:

After the grid is loaded (binding to local data), in some cases, I need to apply the filters, paging, and selection from a previous state of the grid. If I do this inside the databound event, this will cause an infinte loop (as I've read and experience first-hand). How / where can I add the code from ApplyPreviousSettings (see below js code) so that it can work automatically?

E.g. of scenario in cause.

When on page "Users\Index" filter the grid (filterMode = row), change page (if necessary), and select an item.

Click on Edit (which redirects the edit page for the selected user) - at the point of leaving the "Users\Index" , I save in localstorage the grid's state (not all of it - only filter, paging and selection)

When clicking on Save or Cancel, the Index page (with the grid) will be displayed AND it is at this time that I want to "restore" the grid according to the data in the localstorage.

 

I've attached screenshots for the above scenario and a video.

The grid looks like this:

@(Html.Kendo().Grid(Model)
          .Name("Grid")
          .Columns(columns =>
          {
              columns.Bound(p => p.Id).Title("#= Id #").Hidden(true).HtmlAttributes(new { id = "#= Id #" });
              columns.Bound(p => p.FirstName).Title(Resource.Firstname).Filterable(f => f.Cell(c => c.Operator("Contains").ShowOperators(false).Template("EnableAutoFiltering")));
              columns.Bound(p => p.Name).Title(Resource.Lastname).Filterable(f => f.Cell(c => c.Operator("Contains").ShowOperators(false).Template("EnableAutoFiltering")));
              columns.Bound(p => p.EmailAddress).Title(Resource.Email).Filterable(f => f.Cell(c => c.Operator("Contains").ShowOperators(false).Template("EnableAutoFiltering")));
              columns.Bound(p => p.CompletelyEquiped).Title(Resource.CompletelyEquipped)
                  .ClientTemplate("<div style='text-align: center;'><input type='checkbox' value='#= CompletelyEquiped #' disabled='disabled' " +
                                  "# if (CompletelyEquiped) { #" +
                                  "checked='checked'" +
                                  "# } #" +
                                  "/> </div>").Filterable(filterable =>
                                      filterable.Messages(m => m.IsFalse(Resource.No_UserIndex))
                                          .Messages(m => m.IsTrue(Resource.Yes_UserIndex)));

              columns.Bound(p => p.BusinessUnit).Title(Resource.BusinessUnit_UserCreate).Filterable(f => f.Cell(c => c.Operator("Contains").ShowOperators(false).Template("EnableAutoFiltering")));
              columns.Command(c => c.Destroy());
          })
          .ToolBar(toolbar =>
          {

              toolbar.Template(@<text>
                                   <div class="toolbar">
                                       <a href="@Url.Action("Create", "User")" class="k-button k-button-icontext" id="CreateButton"><span class='k-icon k-add'></span>@Resource.Create</a>
                                       @Html.Kendo().Button().Name("EditButton").Content(Resource.Edit).Events(e => e.Click("EditClick")).SpriteCssClass("k-icon k-edit")

                                   </div>
                                </text>);
          })
          .HtmlAttributes(new {style = "width: 125%;"})
          .Pageable(pageable => pageable.Input(true).Numeric(false))
          .Sortable()
          .Events(e => e.DataBound("CustomizeFilterMenu"))
          .Selectable(s => s.Mode(GridSelectionMode.Single))
          .Filterable(ftb => ftb.Mode(GridFilterMode.Row))
          .DataSource(dataSource => dataSource
               .Ajax()
              .ServerOperation(false)
              .Model(model => model.Id(p => p.Id))
              .PageSize(10)
              .Destroy("Delete", "User")

          ))

Javascript:

 

function EnableAutoFiltering(args) {
    args.element.css("width", "90%").addClass("k-textbox").keydown(function (e) {
        setTimeout(function () {
            $(e.target).trigger("change");
        });
    });
}

function EditClick() {
    var grid = $('#Grid').data("kendoGrid");

    var selectedItem = grid.dataItem(grid.select());

    if (selectedItem == null) {
        alert("Please select row!");
    } else {
        if (window.location.pathname.endsWith("Index")) {
            window.location = "../User/Edit/" + selectedItem["Id"];
        } else {
            window.location = "../" + window.location.pathname.split("/")[1] + "/User/Edit/" + selectedItem["Id"];
        }

    }
}

function ApplyPreviousSettings() {
        var gridOptions = localStorage["kendo-grid-options"];
        if (gridOptions === "null" || gridOptions === undefined) {

        } else {
            var grid = $("#Grid").data("kendoGrid");

            var state = JSON.parse(gridOptions);

            grid.dataSource.filter(state.filter);
            grid.pager.page(parseInt(state.page));
            var row = $("#Grid").find("tbody>tr>td[id= " + state.selectedUserId + "]").parent();
            grid.select(row);


        }
}

function CustomizeFilterMenu(args) {
    var parents = $(":radio").parent();
    if (!$(parents[0]).hasClass("RadioButtonFilterStyle")) {
        $(parents[0]).addClass("RadioButtonFilterStyle");
    }
}
window.onbeforeunload = function (e) {
    if (e.target.activeElement.id === "EditButton" || e.target.activeElement.id === "CreateButton") {
        var grid = $("#Grid").data("kendoGrid");
        var dataSource = grid.dataSource;
        var state =
            {
                page: dataSource.page(),
                filter: dataSource.filter(),
                selectedItem : grid.dataItem(grid.select()),
                selectedUserId : grid.dataItem(grid.select()).Id
            };
        localStorage["kendo-grid-options"] = kendo.stringify(state);
    } else {
        localStorage["kendo-grid-options"] = null;
    }
};

$(document).ready(function () {
    $("#KendoGrid").removeAttr("hidden");
    kendo.ui.progress($("KendoGrid"), false);
   
});

 

Important things to note: 

Under the grid (as seen in the screenshots) there is a button which does (if I click it manually) exactly what I need to do automatically (the button with text: "ceva") - the button calls the js method ApplyPreviousSettings. 

 

Also, here is a link to a video I've recorded, that I hope will clarify even further what I want to do.

 

https://www.dropbox.com/s/14wb1vuz76sr3st/sampleVideo2.zip?dl=0

Thank you.

Vlad

Alex Hajigeorgieva
Telerik team
 answered on 27 Jan 2020
8 answers
1.7K+ views
For example, I have json file:

[
    { "text": "Furniture", "items": [
        { "text": "Tables & Chairs" },
        { "text": "Sofas" },
        { "text": "Occasional Furniture" }
    ] },
    { "text": "Decor", "items": [
        { "text": "Bed Linen" },
        { "text": "Curtains & Blinds" },
        { "text": "Carpets" }
    ] }
]

I try to bind it to TreeView:

var data = new kendo.data.HierarchicalDataSource({
    transport: {
        read: {
            url: "/test.json"
        }
    }
});
 
 
$("#treeview").kendoTreeView({
    dataSource: data
});

But I get only top level nodes(see attach). Other levels loaded only by click on parents (but they can't, because it's simple json file). How can I chage this?
Aleksandar
Telerik team
 answered on 24 Jan 2020
10 answers
1.4K+ views

I'm having a problem getting the filters and sort information from Kendo Grid to my MVC controller. I am using a service to pass form data and DataSource data to the MVC Controller.
Here is my Kendo Grid DataSource:

dataSource: new kendo.data.DataSource({

transport: { read: function (e) { generalsearchService.submitSearch(e.data, form)

.then(function success(response) { e.success(response.data);});}},

schema: { data: "Data", total: "Total"},

pageSize: 25,

serverPaging: true,

serverFiltering: true,

serverSorting: true}),

Here is my Service code:

this.submitSearch = function (command, form) {return $http.post('/SSQV4/SSQV5/Search/SubmitCriteria', {'command': command, 'form': form});

Here is my MVC Controller Method definition:

public async Task<ActionResult> SubmitCriteria(DataSourceRequest command, ContractorSearchViewModel form)

The problem is when it hits the above method, "command" no longer contains filter and sort information.

attempting to add type: aspnetmvc-ajax throws an error in kendo.all.min.js -- Unable to get property 'slice' of undefined or null reference.

 

Any assistance is greatly appreciated.

Alex Hajigeorgieva
Telerik team
 answered on 24 Jan 2020
3 answers
2.3K+ views

Hi, 

I apologize if this is a repeated question, but does anyone know what this error means? I've searched my code-base and only found mention of 'tagName' in the jQuery and Kendo libraries ("e.target.tagName", "getElementByTagName()")

Its not causing problems, but our QC dept keep bringing it up.

Thanks in advace,
Grant

Martin
Telerik team
 answered on 24 Jan 2020
1 answer
140 views

When using the Kendo Window in JQuery or MVC, you can bypass the constrained area by pinning the window and then attempting to move it. Is this expected behavior?

You can see an example by going to your online demos, pin the window, then attempt to move it.

https://demos.telerik.com/kendo-ui/window/constrain-movement

 

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="styles/kendo.common.min.css" />
    <link rel="stylesheet" href="styles/kendo.default.min.css" />
    <link rel="stylesheet" href="styles/kendo.default.mobile.min.css" />
 
    <script src="js/jquery.min.js"></script>
    <script src="js/kendo.all.min.js"></script>
     
 
</head>
<body>
<div id="example">
    <div id="container">
        <div id="window">
            <p>Alvar Aalto is one of the greatest names in modern architecture and design.
               Glassblowers at the iittala factory still meticulously handcraft the legendary vases
               that are variations on one theme, fluid organic shapes that let the end user decide the use.
            </p>
        </div>
    </div>
 
    <script>
        $(document).ready(function() {
            $("#window").kendoWindow({
                width: "300px",
                height: "200px",
                draggable: {
                    containment: "#container"
                },
                title: "About Alvar Aalto",
                actions: ["Minimize", "Maximize", "Pin"]
            }).data("kendoWindow").open();
        });
    </script>
 
    <style>
        #container {
            height: 400px;
            width: 600px;
            position: relative;
            border: 1px solid rgba(20,53,80,0.14);
        }
    </style>
</div>
 
 
</body>
</html>
Petar
Telerik team
 answered on 23 Jan 2020
17 answers
1.9K+ views
Hi Telerik team,

Good day to all.

I would like to ask, on how could I hide the default  Kendo generated select button, hide it, then trigger the click event in mySelectButton's click?

Thank you in advance for your immediate assitance.
Nencho
Telerik team
 answered on 23 Jan 2020
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?