Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to specify multiple ID for model in Kendo Web UI?

I am completely new to Kendo UI, so maybe I missing something, but after reading the docs API: http://docs.kendoui.com/api/framework/model it seems Kendo is limited only to work with single ID.

For example, let's say I have a grid in which each row is identified by pair of values (because underlying data have such constraint). So, if I've read it right there is no straightforward way to express this in Kendo?

One workaround I can think of is creating some ad-hoc value which is encoded ids like "value1|value2" (string) and when getting data back from UI, decoding them back.

Is there any more clear way?

Specific example

To focus on something substantial:

http://demos.kendoui.com/web/grid/editing-inline.html

and the relevant code is (from .cshtml file):

.Model(model => model.Id(p => p.ProductID))

in my case it would be (the simplest way I can think of):

.Model(model => model.Id(p => p.ProductComboId1Id2))

where ProductComboId1Id2 is a string encoded as described above.

Solution (sort of)

See at the bottom of the page, it was a problem with Kendo installation. Installer script didn't install one crucial .js file and entire framework went weird. My problem was one of those misbehaviours.

like image 573
greenoldman Avatar asked Oct 28 '12 14:10

greenoldman


1 Answers

You can use multiple IDs on a single grid. Below I've included syntax for declaring them as well as how to access them via javascript.

Declaration

        .Model(model =>
        {
            model.Id(i => i.ProductID);
            model.Id(i => i.ProductID2);
        })

Accessing

function GetIDs() {
var itemGrid = $("#GRIDNAME").data("kendoGrid");
var dataItem = itemGrid.dataItem($(this));
var ID1 = dataItem.ProductID;
var ID2 = dataItem.ProductID2;}

function GetID() would be invoked on the grid like this through the row's command column:

        columns.Command(command =>
        {
            command.Custom("Edit").Text("Edit").Click("GetIDs");
            command.Destroy();
        });
like image 66
Jark Monster Avatar answered Nov 08 '22 02:11

Jark Monster