Telerik Forums
UI for ASP.NET MVC Forum
1 answer
279 views
i am new to kendo ui, i have a requirement with grid, i want to display grid like attached image. 
is it possible with kendo grid? if this is possible, please provide some example code.
please see the attachment.
Nikolay Rusev
Telerik team
 answered on 21 Dec 2012
6 answers
802 views
Is it possilbe to embed a List View into a Kendo Grid column via a client template?  
If it's possible how to you bind the List view to the Permmisions list? (Permissions being an IEnumberable<PermissionModel>) 

@(Html.Kendo().Grid<RoleModel>()
    .Name("RoleGrid")
    .Columns(x =>
                 {
                     x.Bound(p => p.Name).Width(150);
                     x.Bound(p => p.Description).Width(350);
                     x.Bound(p => p.Permissions).ClientTemplate("test");                   
                     
                     x.Command(command =>
                                   {
                                       command.Edit();
                                       command.Destroy();
                                   });
                 }))


<script type="text/x-kendo-template" id="test" >
    @(Html.Kendo().ListView<PermissionModel>().Name("listView")
                                                                                     .AutoBind(true)
                                                                                     .ToClientTemplate()
                                                                                     )
</script>
Mike
Top achievements
Rank 1
 answered on 20 Dec 2012
1 answer
1.4K+ views

Hello ,

I have a kendoGrid in form with different clientTemplate like this :

@using (Ajax.BeginForm("edition","activites",null,new { id = id + "formSaisieHeures", width = "100%" }))
    {
 @(Html.Kendo().Grid<Integraal.Models.Activite>()
    .Name(id+"GrilleSaisieHeures")
    .Columns(columns =>
    {
        columns.Bound(p => p.rowId)
            .ClientTemplate("#= rowId #" + "<input type='hidden' name='Activites[#= index(data)#].rowId' value='#= rowId #' />")
            .Hidden();
        columns.Bound(p => p.date)
            .ClientTemplate("#= kendo.toString(date,'d') #" + "<input type='hidden' name='Activites[#= index(data)#].date' value='#= kendo.toString(date,'dd/MM/yyyy') #' />")
            .Width(100);
        columns.Bound(p => p.client.code)
            .ClientTemplate("#= client.code #" + "<input type='hidden' name='Activites[#= index(data)#].client.code' value='#= client.code #' />")
            .Width(100);
        columns.Bound(p => p.client.raisonSociale)
            .ClientTemplate("#= client.raisonSociale #" + "<input type='hidden' name='Activites[#= index(data)#].client.raisonSociale' value='#= client.raisonSociale #' />")
            .Width(150);
        columns.Bound(p => p.affaire.code)
            .ClientTemplate("#= affaire.code #" + "<input type='hidden' name='Activites[#= index(data)#].affaire.code' value='#= affaire.code #' />")
            .Width(100);
        columns.Bound(p => p.affaire.mnemonique)
            .ClientTemplate("#= affaire.mnemonique #" + "<input type='hidden' name='Activites[#= index(data)#].affaire.mnemonique' value='#= affaire.mnemonique #' />")
            .Width(150);
        columns.Bound(p => p.heures)
                //.ClientTemplate(Html.Kendo().NumericTextBox<Decimal>()
                //        .Name("Activites[#=index(data)#].heures")
                //        .HtmlAttributes(new { type = "hidden", value = "#=heures#" })
                //        .Format("{n2}")
                //        .Decimals(2)
                //        .Min(0)
                //        .ToClientTemplate().ToHtmlString()
                // )
                 
            .ClientTemplate("#= heures #" +
                    "<input type='hidden' name='Activites[#= index(data)#].heures' value='#= heures #' data-format='n2' data-decimals='2' data-step='0.01' data-role='numerictextbox' />")                                  
                //.ClientGroupFooterTemplate("Heures : #=sum#")               
                .Width(100);
        columns.Bound(p => p.deplacement)
            .ClientTemplate("#= deplacement #" + "<input type='hidden' name='Activites[#= index(data)#].deplacement' value='#= deplacement #' />")
                .Width(100);
        columns.Bound(p => p.zone)
            .ClientTemplate("#= zone.libelle #" + "<input type='hidden' name='Activites[#= index(data)#].zone.code' value='#= zone.code #' />")
                .Width(150);
        columns.Command(command => command.Destroy()).Width(30);       
    })
        .Events(events => events.DataBound("onDataBoundSaisieHeures"))
        .ToolBar(toolbar =>
        {
            toolbar.Create();
        })
    .Resizable(resize => resize.Columns(true))
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .Selectable(selectable => selectable.Mode(GridSelectionMode.Multiple))
    .Sortable()
    .Scrollable()
    .Navigatable() // Permet de changer de cellule en édition par exemple ! ;-)
    .Groupable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Aggregates(aggregates =>
        {
            aggregates.Add(p => p.heures).Sum();
        })
         
        .Batch(true)
        .ServerOperation(false)
        .Model(model =>
            {
                model.Id(p => p.rowId);
                // On indique des valeurs par défaut pour le bind des objets sinon erreur.
                model.Field(p => p.client).DefaultValue(
                     new Integraal.Models.ActiviteClientViewModel
                    {
                        code = "",
                        raisonSociale = ""
                    }
                );
                model.Field(p => p.affaire).DefaultValue(
                     new Integraal.Models.Affaire
                    {
                        code = "",
                        mnemonique = ""
                    }
                );
                model.Field(p => p.zone).DefaultValue(
                        new Integraal.Models.Zone
                        {
                            code = "",
                            libelle = ""
                        }
                );
            })
        .Read(read => read.Action("editing_read", "activites").Data("additionalDataRead"))
    )
)

 

my problems is on the columns "heures", i need to send a Decimal value to the controller.
my models "Activite" have correct data type for the columns "heures"
[DisplayName("Heures")]
[UIHint("Decimal")]
[DisplayFormat(DataFormatString = "{n2}")]
public Decimal heures { get; set; }

my input value is good in the html
(exemple : <input type="hidden" data-role="numerictextbox" data-step="0.01" data-decimals="2" data-format="n2" value="6.66" name="Activites[1].heures">)

"<input type='hidden' name='Activites[#= index(data)#].heures' value='#= heures #' data-format='n2' data-decimals='2' data-step='0.01' data-role='numerictextbox' />"

 


But in my controller the activite.heures is always at 0 -_-'
all others values are set correctly except heures
 

[HttpPost]
public PartialViewResult Edition(Activite activite)
{
List<Activite> edited = new List<Activite>();
List<Activite> deleted = new List<Activite>();
...

someone have any idea ?

 

 

 

Daniel
Telerik team
 answered on 20 Dec 2012
1 answer
189 views
I have a grid set up inside a Kendo Window. If I click on a link, I open the window, and call grid.datasource.refresh from javascript. The first time I do this, it works perfectly. Once I close the window, if I try to reopen it and reload the grid with other data, the grid never refreshes. The weird part is that this only happens with IE 9. Using the latest versions of IE, Chrome and Firefox all work. Any ideas?

Grid MVC Code:
@(Html.Kendo().Grid<Person>()
	    .Name("grid")
	    .Columns(columns =>
	                {
	                    columns.Bound(x => x.FirstName).Title("First Name");
	                    columns.Bound(x => x.LastName).Title("Last Name");
	                    columns.Bound(x => x.EmailAddress).Title("Email Address");
	                    columns.Bound(x => x.PhoneNumber).Title("Phone Number");
	                })
        .DataSource(dataSource => dataSource
            .Ajax()
            .Read(read => read.Action("LoadGrid""Dashboard")
                .Data("my.view.parms"// the name of the JavaScript function which will return the additional data
            )
        )
    )

JS:
var show = function () {
        reloadGrid("#grid");
        showWindow("#window""Lead Report");
    };

var reloadGrid = function(gridElement) {
        var grid = $(gridElement).data("kendoGrid");
        grid.dataSource.read();
    };

var showWindow = function(element, title, width, actions) {
        var window = $(element);
 
        window.show();
 
        if (!window.data("kendoWindow")) {
            window.kendoWindow({
                width: width || "1400px",
                title: title,
                actions: actions || ["Close"],
                modal: true
            });
        }
 
        $(element).data("kendoWindow").center().open();
    };
Petur Subev
Telerik team
 answered on 20 Dec 2012
1 answer
121 views
Hello,

I have a menu that I would like to use content in such as the "Stores" menu option in the example found here.  Basically I want to add HTML markup to a parent menu item.  Is this possible?

Thank you,
David A.
Petur Subev
Telerik team
 answered on 19 Dec 2012
2 answers
355 views
Hi,

I need your help to declare kendogrid which contains a complex field:Specifically ,i have a relation 1-to-1 between table RapportView and table Delegue.I hope to put the "ID"and "Gamme" of table delegue in the same row as rows of RapportView .
My data has type as json like this:
[{ "Cycle":"2008",
"DateDebut":"\/Date(1202684400000+0100)\/",
"DateFin":"\/Date(1203202800000+0100)\/"
,
"Delegue":{"Gamme":"BU 1A","ID":13,"Matricule":"033","Nom":"S","Prenom"
:"Sa","Role":null}
},
{

"Cycle":"2008",
"DateDebut":"
\/Date(1203289200000+0100)\/",
"DateFin":"\/Date(1203807600000+0100)\/",

 "Delegue":{"Gamme":"BU 1A","ID":13,"Matricule":"033","Nom":"S","Prenom":"Sa","Role":null}
}]
i hope that my problem is clear.Thanks for yr help.
nessrine
Top achievements
Rank 1
 answered on 19 Dec 2012
6 answers
513 views

I have implemented inline editing with Knedo UI MVC grid with Ajax binding, Server side validation handled in controller and sending the error back using -

ModelState.AddModelError("Error: ", ex.Message);

@(Html.Kendo().Grid<AnalyticsServiceWeb.ViewModel.SomeViewModel>() .Name("Grid") .Columns(columns => { columns.Bound(p => p.Name); columns.Bound(p => p.Path); columns.Bound(p => p.Space); columns.Command(command => { command.Edit(); command.Destroy(); }); }) .ToolBar(toolbar => toolbar.Create()) .Editable(editable => editable.Mode(GridEditMode.InLine)) )

function error_handler(e) {
    if (e.errors) {
        var message = "Errors:\n";
        $.each(e.errors, function (key, value) {
            if ('errors' in value) {
                $.each(value.errors, function () {
                    message += this + "\n";
                });
            }
        });
        alert(message);
    }
}

The server side error message is getting displayed when there is a server side exception, but it still completes the action in UI, i mean it adds the new record to the grid and update as well even though there is server side exception.

Is there any way to retain the state of UI before the action start?, it supposed to work in that way, not sure if i am missing anything?

Thanks in advance

Pat
Top achievements
Rank 1
 answered on 19 Dec 2012
2 answers
300 views

Using version 2012.3.1114.

This work using Visual Studio Development Server but does not show the drop down using IIS Express or IIS 7 on Windows Server 2008 R2
Code in view:

@(Html.Kendo().ComboBoxFor(m => m.ForPost)
      .Filter(FilterType.StartsWith)
      .DataTextField("label")
      .DataValueField("value")
      .MinLength(1)
      .DataSource(source => {
          source.ServerFiltering();
          source.Read(read => {
              read.Action("AjaxPost", "Home"); //Set the Action and Controller name
              read.Type(HttpVerbs.Post);
          });
      }))
Code in Controller:

 

[HttpPost]
public ActionResult AjaxPost(string text) {
    if (string.IsNullOrWhiteSpace(text)) return Json(null);
    var x = Data.Where(d => d.StartsWith(text, StringComparison.InvariantCultureIgnoreCase))
        .Select(d => new { label = d, value = d }).ToList();
    return Json(x);
}

IE 9 in Javascript debug it shows this error "Microsoft JScript runtime error: Unable to get value of the property 'Errors': object is null or undefined" and pints the this dynamic code.

function anonymous(d) {
return d.Errors
}

Using get works fine but our security people insist we use post for ajax.

Thanks,

Tom Wilkinson

 

Georgi Krustev
Telerik team
 answered on 19 Dec 2012
3 answers
1.0K+ views
Hi all

I am currently trying to find a way to automatically set the width of dropdownlist depending on drop down items

Thanks

Jing
Dimo
Telerik team
 answered on 19 Dec 2012
4 answers
187 views
Hi

I have upgraded my kendo application from 2012.2.710  to 2012.3.1114. In the updated dll, when i do ajax binding , the non nullable properties of the model is throwing error but the same was working fine in the '2012.2.710' version. What went wrong in the new version ? please give me a proper solution for this issue. The code to bind the grid is given below.

@(Html.Kendo().Grid<LinklistRow>()
        .Name("Grid").Selectable()
                     .ToolBar(commands => commands.Create().HtmlAttributes(new { Title = "Add New Link" }))                
                .Columns(columns =>
                {
                    columns.Bound(client => client.lkLinkId).Hidden();
                    columns.Bound(client => client.lkTitle).Title("Title").Width(200).Sortable(true);
                    columns.Bound(client => client.lkUrl).Title("Url").Width(500).Sortable(true);
                    columns.Command(commands =>
                    {
                        commands.Edit().Text(" ").UpdateText(" ").CancelText(" ").HtmlAttributes(new { Title = "Edit" });
                        commands.Destroy().Text(" ").HtmlAttributes(new { Title = "Delete" }); ;
                    }).Width(90).HtmlAttributes(new { @class = "k-gridButtonAlignment" });
                }).Editable(editable => editable.Mode(GridEditMode.InLine))
                .Events(e => e.Edit("OnEdit"))
                    .DataSource(dataSource => dataSource.Ajax()
                    .ServerOperation(false)                        
                    .Read(read => read.Action("Show", "Home", new { area = "Link", clientId = Model.ClientId }))
                    .Model(model => model.Id(c => c.lkLinkId))
                    .Create("Create", "Home", new { area = "Link", clientId = Model.ClientId })
                    .Update("Edit", "Home", new { area = "Link", clientId = Model.ClientId })
                            .Destroy("Destroy", "Home", new { area = "Link", clientId = Model.ClientId })
                            .PageSize(20)
                            ).Pageable(pager => pager.PageSizes(true)).Sortable()
                    )

Thanks
Prashanth.
Vladimir Iliev
Telerik team
 answered on 19 Dec 2012
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
MultiColumnComboBox
Dialog
DropDownTree
Checkbox
Slider
Switch
Notification
Accessibility
ListView (Mobile)
Pager
ColorPicker
DateRangePicker
Security
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
SegmentedControl
+? more
Top users last month
Boardy
Top achievements
Rank 2
Veteran
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
ivory
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
ClausDC
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Boardy
Top achievements
Rank 2
Veteran
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
ivory
Top achievements
Rank 1
Iron
Iron
Rob
Top achievements
Rank 3
Bronze
Bronze
Iron
ClausDC
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?