Telerik Forums
UI for ASP.NET MVC Forum
2 answers
1.9K+ views
I have a three level grid from which users may navigate to views and return to the grid.  I want to put them back in the context they left.  I'm really having trouble figuring out how to do this.  I've been able to save the data-uid of an expanded row at the top level, but I can't seem to find it when the page loads after the user returns.  Maybe I'm not subscribing to the correct event?

I've subscribed to 

.Events(events => events.DataBound("onDataBound").DetailInit("onDetailInit").DetailExpand("onExpand").DetailCollapse("onCollapse"))

In onExpand I have

function onExpand(e) {
    //alert('onExpand was called. BatchID = ' + e.masterRow.closest("tr.k-master-row").attr('data-uid'));
    // save the data-uid value in the session
    var selectedBatchID = e.masterRow.closest("tr.k-master-row").attr('data-uid')
    $.post('@Url.Action("SetSessionVariable", "Home")',
        {
            key: 'lastSelectedBatchID',
            value: selectedBatchID
        });
}
 
I think I want to get the row in onDataBound or possibly onDataBinding but can't get a handle on the desired row.  I've looked a lots of examples that are ll different and none of them work for me.

Once I get the top level row expanded, then I'll need to do the same for the second and third levels.  Can you give an example of how this is done?  All the demos I've see so far are super simple and really don't seem to apply or don't give context as to which event is being subscribed to.

Thanks!

Rich


Richard
Top achievements
Rank 1
 answered on 09 Apr 2014
3 answers
591 views
I have model class like so:
public class ServerModel
{
    public Guid Id { get; set; }
    public CustomerModel Customer { get; set; }
    public string Name { get; set; }
}

Inside a Kendo Grid, I'd like to display a link to the Customer, but as the Customer can be null, I'm having trouble getting this link to only show when the customer is not null. Below is the client template I'm trying to use:
@(Html.Kendo().Grid(Model)
      .Name("Grid")
      .Columns(columns =>
      {
          columns.Bound(s => s.Name)
                 .ClientTemplate("<a href='" + Url.Action("Details", "Server") + "/#= ID #'>#= Name #</a>");
          columns.Bound(s => s.Hostname);
          columns.Bound(s => s.Customer.Name).Title("Customer")
                 .ClientTemplate("#= Customer ? '<a href=\'" + Url.Action("Details", "Customer") + "/#= ID #\'>#= Customer.Name #</a>' : 'Unknown'#");
          columns.Bound(s => s.Reported).Title("Last Reported (UTC)").Format("{0:yyyy-MM-dd hh:mm:ss tt}");
      })

This just gives me a template error, though.
Dimiter Madjarov
Telerik team
 answered on 08 Apr 2014
4 answers
1.4K+ views
I have a kendo ui grid with a custom editor template. I want to be able to hide the editor for 2 fields on the popup editor based on the value of a 3rd field.

eg on the kendo grid if property a is set to true, then when the user selects edit and the popup shows,  property b and c editors are not displayed. However if property a is false then editors(textboxes) for b and c must be shown on the popup.

I have tried to do the following:

                    @(Html.Kendo().Grid(Model)
                    .Name("Grid")
                    .Events(e=>e.
                            Edit("Grid_Edit")
                             )
                    .Columns(columns => 


then 
<script>
    function Grid_Edit(e) {
        var dataItem = e.dataItem;
        var mode = e.mode;
        var form = e.form;
if (dataItem.UseIntegratedSecurity)
         $(form).find("#Username").hide()

    }
</script>

to try and debug i have done the following:
<script>
    function Grid_Edit(e) {
        var dataItem = e.dataItem;
        var mode = e.mode;
        var form = e.form;
        if (dataItem.IntegratedSecurity==true)
            alert("integrated security")
        
    }
</script>
 But the alert is never displayed even when this field is set to true.

Am I on the right track or is there an easier way to achieve my goal?

Daniel
Telerik team
 answered on 08 Apr 2014
1 answer
238 views
Hi,

I am populating a Stacked Column Chart with a date axis. However, I only want to display monday-friday so I only populate the chart with dates from my data set that are weekdays.

The chart is automatically adding blank spaces for the missing dates (weekends). When I changed it to a category axis it stopped stacking my bars and completely distorted the graph... as it created a new column for every single data point. Is there a way to hide the dates without data? Do I need to change my implementation in order to change the axis from date to category or a stacked bar chart?

relevant code:
public class DataViewModel
    {
        public string Category { get; set; }
        public double? Phone { get; set; }
        public double? ClaimsWork { get; set; }
        public double? Unstaffed { get; set; }
        public double? Outbound { get; set; }
        public double? Meetings { get; set; }
        public double? Personal { get; set; }
        public DateTime Date { get; set; }
 }

          .Series(series =>
          {
              {
                  series.Column(model => model.Phone).Name("Phone").Stack(ChartStackType.Stack100).Color("#009bd7");
                  series.Column(model => model.ClaimsWork).Name("ClaimsWork").Stack(ChartStackType.Stack100).Color("#76b800");
                  series.Column(model => model.Unstaffed).Name("Unstaffed").Stack(ChartStackType.Stack100).Color("#d43851");
                  series.Column(model => model.Outbound).Name("Outbound").Stack(ChartStackType.Stack100).Color("#ffd600");
                  series.Column(model => model.Meetings).Name("Meetings").Stack(ChartStackType.Stack100).Color("#AF81C9");
                  series.Column(model => model.Personal).Name("Personal").Stack(ChartStackType.Stack100).Color("#ef4c00");
              }

          })
          .CategoryAxis(axis => axis
              .Labels(label => label
                  .Step(2)
              )
              .Name("label-axis")
              .Categories(model => model.Date)
          ) 





Iliana Dyankova
Telerik team
 answered on 08 Apr 2014
4 answers
134 views
Hi all,
I need help with the "Create" operation.
When I create a new task, the Scheduler doesn't send any data to the Controller method.

My C# object is:

public class Reservation : ISchedulerEvent
    {
        public virtual int IdReservation { get; set; }
        public virtual int? IdWorker { get; set; }
        public virtual int IdRoom { get; set; }
        public virtual string Title { get; set; }
        public virtual string Description { get; set; }
        public virtual DateTime Start { get; set; }
        public virtual string StartTimezone { get; set; }
        public virtual DateTime End { get; set; }
        public virtual string EndTimezone { get; set; }
        public virtual string RecurrenceRule { get; set; }
        public virtual string RecurrenceException { get; set; }
        public virtual bool IsAllDay { get; set; }
        public virtual DateTime ReservationDate { get; set; }
    }

and the Javascript is:

$("#scheduler").kendoScheduler({
        date: new Date("2014/3/25"),
        startTime: new Date("2014/3/25 07:00 AM"),
        height: 600,
        views: [
            "day",
            { type: "workWeek", selected: true },
            "week",
            "month",
            "agenda"
        ],
        timezone: "Etc/UTC",
        dataSource: {
            batch: true,
            transport: {
                read: {
                    url: "/Reservation/Read",
                    dataType: "json",
                    type: "POST"
                },
                update: {
                    url: "/Reservation/Update",
                    dataType: "json",
                    type: "POST"
                },
                create: {
                    url: "/Reservation/Create",
                    dataType: "json",
                    type: "POST"
                },
                destroy: {
                    url: "/Reservation/Delete",
                    dataType: "json",
                    type: "POST"
                },
                parameterMap: function (options, operation) {
                    if (operation !== "read" && options.models) {
                        return { models: kendo.stringify(options.models) };
                    }
                }
            },
            schema: {
                model: {
                    id: "idReservation",
                    fields: {
                        idReservation: { from: "IdReservation", type: "number", defaultValue: 1 },
                        worker: { from: "IdWorker", type: "number", defaultValue: 1 },
                        roomId: { from: "IdRoom", type: "number" },
                        title: { from: "Title", defaultValue: "No title" },
                        description: { from: "Description", defaultValue: "" },
                        start: { from: "Start", type: "date" },
                        startTimezone: { from: "StartTimezone", defaultValue: null },
                        end: { from: "End", type: "date" },
                        endTimezone: { from: "EndTimezone", defaultValue: null },
                        recurrenceRule: { from: "RecurrenceRule" , defaultValue: null },
                        recurrenceException: { from: "RecurrenceException", defaultValue: null },
                        isAllDay: { from: "IsAllDay", type: "boolean", defaultValue: false },
                        reservationDate: { from: "ReservationDate", type: "date", defaultValue: new Date() }
                    }
                }
            }
        }
    });

and, this is my "Create" (MVC Controller) method is:

public virtual JsonResult Create([DataSourceRequest] DataSourceRequest request, Reservation reservation)
{
    ...
}

Please, can anyone help me to know why the properties in the "reservation" parameter ("Create" method) are all empties?

Thanks
Mattia
Top achievements
Rank 1
 answered on 08 Apr 2014
2 answers
121 views
trying to initialize my Kendo ui grid. I am able to populate it using the View object, but when I try doing it in Json format (i.e. when moving to next page) I get a screen showing json results instead of my view.Here's the controller code: public class CampaignsController : Controller
{
//
// GET: /Campaigns/


[HttpGet]
public ActionResult Index()
{
return View(GetAllCampaigns());
}


public ActionResult Campaigns_Read([DataSourceRequest] DataSourceRequest request)
{
DataSourceResult result = GetAllCampaigns().ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}


private static IEnumerable<NH_Campaign> GetAllCampaigns()
{
List<NH_Campaign> result = null;
if (MBPDataAccess.Instance.GetAll(out result))
{
return result;
}
return new List<NH_Campaign>();
}and the cshtml is :@model IEnumerable<MBP.NH_Campaign>

<h2>View1</h2>


@(Html.Kendo().Grid(Model)
.Name("CGrid")
.Columns(columns =>
{
columns.Bound(p => p.CampaignID).Title("Id");
columns.Bound(p => p.CampaignName).Title("Name");
columns.Bound(p => p.ClickUrlC2C_OFF).Title("Click URL");
columns.Bound(p => p.PlatformID).Title("Platform ID");
})
//.Groupable()
.Pageable()
//.Sortable()
//.Filterable()
.DataSource(dataSource => dataSource.Ajax().PageSize(2).Read(read => read.Action("Campaigns_Read", "Campaigns"))
));the Index action that is called when the page is loaded works great, but when I try to move to the next page the Camapigns_Read action is called but I get a blank page with json results.
 i want to perform paging on server-side
What am I missing here? 
Richard
Top achievements
Rank 1
 answered on 08 Apr 2014
1 answer
90 views
Hi,
I am quite new to telerik and having some problem with datetime picker.
@Html.Kendo().DatePicker().Name("dtpicker")) is the code i am using. It does not show any error but only shows textbox instead of showing datetime picker control.

Thanks.
Atanas Korchev
Telerik team
 answered on 07 Apr 2014
4 answers
287 views

I am working an application using Kendo Grid on an MVC application.  Starting at about 10:30 (central time) yesterday, the kendo grid software stopped working.  I am using IE 10 on a Windows 7 OS. The error is

Unhandled exception at line 3, column 23238 in http://cdn.kendostatic.com/2014.1.318/js/jquery.min.js
0x80020003 - JavaScript runtime error: Member not found.

I am able to replicate the error in a simple application.  The View file contains the following definition for the grid

 

@(Html.Kendo().Grid<MvcApplication1.Models.TestItem>()
  .Name( "testItemGrid" )
  .Columns( columns =>
  {
    columns.Command( command =>
    {
      command.Edit();
    } ).Width( 195 );
    columns.Bound( x => x.ItemId );
    columns.Bound( x => x.Name );
  } )
  .ToolBar( toolbar =>
  {
    toolbar.Create().Text( "Add New Item" );
  } )
  .Sortable()
  .Editable( editable => editable.Mode( GridEditMode.InLine ) )
  .DataSource( ds => ds
    .Ajax()
    .Model( m =>
            {
              m.Id( x => x.ItemId );
            } )
     .Read( "TestItemRead", "TestItemGrid" )
     .Create( "TestItemCreate", "TestItemGrid" )
     .Update( "TestItemUpdate", "TestItemGrid" )
    )
  )

 

The controller contains the following actions:
 

public class TestItemGridController : Controller
{
  public ActionResult Index()
  {
    return View();
  }
 
  public ActionResult TestItemRead( [DataSourceRequest] DataSourceRequest request )
  {
    List<Models.TestItem> items = new List<Models.TestItem>();
    items.Add( new Models.TestItem() { ItemId = 1, Name = "Item 1" } );
    items.Add( new Models.TestItem() { ItemId = 2, Name = "Item 2" } );
    items.Add( new Models.TestItem() { ItemId = 3, Name = "Item 3" } );
    items.Add( new Models.TestItem() { ItemId = 4, Name = "Item 4" } );
    items.Add( new Models.TestItem() { ItemId = 5, Name = "Item 5" } );
    return Json( items.ToDataSourceResult( request ) );
  }
 
  public ActionResult TestItemCreate( [DataSourceRequest] DataSourceRequest request, Models.TestItem testItem )
  {
    if( testItem != null && ModelState.IsValid )
    {
    }
    return Json( new[] { testItem }.ToDataSourceResult( request, ModelState ) );
  }
 
  public ActionResult TestItemUpdate( [DataSourceRequest] DataSourceRequest request, Models.TestItem testItem )
  {
    if( testItem != null && ModelState.IsValid )
    {
    }
    return Json( ModelState.ToDataSourceResult() );
  }
}

 

I have tried several things to fix the error:
1. Update to latest version of Telerik software
 2. Use CDN support
 3. Use Local support

 I am at my wits end to resolve this issue.  Please help!

Leon
Top achievements
Rank 1
 answered on 07 Apr 2014
7 answers
382 views
Successfully using the HTML Editor, I would like to give my users the ability to resize the editor window (like shown in the attachment scribble).



My question:

Is it possible to turn on this functionality or simulate it in some way (maybe something with splitter?)
Dimo
Telerik team
 answered on 07 Apr 2014
2 answers
133 views
I'm using Kendo UI Grid to populate list of data and when i click on particular row i need to redirect to another view page of that particular row. but i have a delete command for that particular row. When i try to delete particular row it redirect to another page.i don't need any redirection after deletion. so the possible solution is i want to deselect only the command column when i select a particular row. Both i need row selection but no need command column selection..Please give a solution  for this...

  @(Html.Kendo().Grid<Portal.Presentation.Web.BoundedContext.TNA.Template.MVC.Areas.Razor.Models.TemplateModel>()
                  .Name("grid_Template_Freeze")
                  .AutoBind(true)
                  .Groupable()
                  .Sortable()
                  .HtmlAttributes(new { style = "border: 0;" })
                  .Scrollable(a => a.Height("auto"))
                          .Selectable(sel => { sel.Mode(GridSelectionMode.Single); sel.Type(GridSelectionType.Row); sel.Enabled(true);
                          })
                  .Columns(c =>
                               {
                                   c.Bound(p => p.TemplateId).Hidden();
                                   c.Bound(p => p.TemplateName).Title("&nbsp;").Title("TEMPLATE NAME");
                                   c.ForeignKey(p => p.ProductTypeId, (System.Collections.IEnumerable) ViewData["ProductTypes"], "Key", "Value").Title("PRODUCT TYPE");
                                   c.ForeignKey(p => p.OwnershipId, (System.Collections.IEnumerable)ViewData["UserTypes"], "Key", "Value").Title("OWNERSHIP");
                                   c.Bound(p => p.CreatedOn).Title("CREATED DATE").Format("{0:dd/MM/yyyy hh:mm}");
                                   c.Bound(p => p.UpdatedOn).Title("LAST MODIFIED DATE").Format("{0:dd/MM/yyyy hh:mm}");
                                   c.ForeignKey(p => p.StatusId, (System.Collections.IEnumerable)ViewData["StatusTypes"], "Key", "Value").Title("STATUS");
                                   c.Command(command => command.Destroy()).Width(80);

                               })
                  .Events(evt => evt.Change("TemplateTaskHandler.onChange"))
                  .DataSource(dataSource => dataSource
                                                .Ajax()
                                                .Sort(sort => sort.Add(p => p.TemplateName).Descending())
                                                .Model(model =>
                                                               {
                                                                   model.Id(p => p.TemplateId);
                                                                   model.Field(p => p.TemplateId);
                                                               })
                                                .Events(events => events.Error("error_handler"))
                                                .PageSize(20).ServerOperation(false)
                                                .Destroy(destroy => destroy.Action("OnTempaleDelete", "List"))
                                                .Read(read => read.Action("OnTempaleRead", "List"))
                  ).Pageable(x => { x.Enabled(true); x.PreviousNext(true); x.PageSizes(true); x.Info(true); x.Input(true); x.Numeric(false); x.Refresh(true); }))



 var TemplateTaskHandler = {

        onChange: function (e) {

            var grid = $("#grid_Template_Freeze").data("kendoGrid");
            var item = grid.dataSource.data()[grid.select().index()];
            location.href = "@Model.ResolveRouteUrl(Portal.Presentation.Web.BoundedContext.TNA.Template.MVC.Areas.Razor.Models.TnaModelTypes.Update)" + "&tmpl=" + item.TemplateId;
        }
    };
}
administrator
Top achievements
Rank 1
 answered on 07 Apr 2014
Narrow your results
Selected tags
Tags
Grid
General Discussions
Scheduler
DropDownList
Chart
Editor
TreeView
DatePicker
Upload
ComboBox
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
ListView (Mobile)
Pager
Accessibility
ColorPicker
DateRangePicker
Wizard
Security
Styling
Chat
MediaPlayer
TileLayout
DateInput
Drawer
SplitView
Barcode
ButtonGroup (Mobile)
Drawer (Mobile)
ImageEditor
RadioGroup
Sparkline
Stepper
TabStrip (Mobile)
GridLayout
Template
Badge
LinearGauge
ModalView
ResponsivePanel
TextArea
Breadcrumb
ExpansionPanel
Rating
ScrollView
ButtonGroup
CheckBoxGroup
Licensing
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
+? more
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Bronze
Iron
Iron
Sergii
Top achievements
Rank 1
Iron
Iron
Dedalus
Top achievements
Rank 1
Iron
Iron
Lan
Top achievements
Rank 1
Iron
Doug
Top achievements
Rank 1
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?