Telerik Forums
UI for ASP.NET MVC Forum
1 answer
99 views
http://demos.kendoui.com/web/grid/filter-menu-customization.html

In your grid demo for filter menu customisation you define grid columns as follows:

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.EmployeeViewModel>()    
    .Name("Grid")
    .Columns(columns => {
        columns.Template(@<text>@item.FirstName  @item.LastName</text>)
                .ClientTemplate("#=FirstName# #=LastName#")
                .Title("Name");
        columns.Bound(e => e.City)
                .Filterable(filterable => filterable.UI("cityFilter"))
                .Width(200);

However, the Filterable method on a column only accepts a bool as an input value.
The code in this demo is not possible.
Myles
Top achievements
Rank 1
 answered on 01 Feb 2013
1 answer
80 views
if I type 7809876543
Is possible to format to (780)-987-6543 for display?
Dimiter Madjarov
Telerik team
 answered on 01 Feb 2013
2 answers
119 views
Hi,
I have this code:
public ActionResult Index(MovieViewModel model, GridCommand command)
{
...
}
But command is empty after for example sorting or changing page in the grid.

In old Telerik Mvc grid there was an attribute to set on the ActionResult. Do I need something similar here?

/Mattias
Mattias
Top achievements
Rank 1
 answered on 01 Feb 2013
1 answer
44 views
Hi,
I'm using this code:
.EnableCustomBinding(true)
.PrefixUrlParameters(false)

and when I hover over the UpdatedDate column I'm getting the correct url: pageSize=10&sort=UpdatedDate-asc
but after I clicked it the url in address bar is: undefinedsort=UpdatedDate-asc&undefinedpage=1&undefinedpageSize=10&undefinedgroup=&undefinedfilter=

Have I missed something?
I have also set a name for the grid: .Name("MyGrid") and that part is removed when using PrefixUrlParameters(false).

Regards,
Mattias
Daniel
Telerik team
 answered on 01 Feb 2013
4 answers
861 views
HI all,

I'm a bit new to Kendo, so forgive me if this is an easy question;

I have a grid of orders. The last column of the grid needs to be a link/button/whatever that launches a bit of JavaScript that does some AJAX stuff. Pretty simple. I found that documentation on the columns.Template method and I _think_ that's what I want. The problem is that I have only found examples where one field from the model is being used in the method call and I need three;
columns.Template(p =>
{@<a href="#"
onclick="GetListOfVendorsByCountyAndProductType('@p.County', '@p.ProductTypeId.ToString()', '@p.OrderId');">Select Vendor</a>;       
                                          });
 I tried the snippet above but I got an error on the page that said "CS0201: Only assignment, call, increment, decrement, await and new object expressions can be used as a statement"

Any advice? Please remember I'm VERY new to the Kendo stuff.

Thanks,
James
Rich Coleman
Top achievements
Rank 1
 answered on 01 Feb 2013
1 answer
53 views
I updated to kendo 19.x today and got a load of errors, I did a rollback and all ok.
Is kendo supposed to work with 19.x, if not will there be an update soon?
Thanks
Atanas Korchev
Telerik team
 answered on 31 Jan 2013
2 answers
84 views
Hi,
It would be great if you could build in so some common properties are possible to enable by parameter true/false.
You have this functionality on some properties already.
It would be useful for example Create, Edit, Destroy like:
.ToolBar(commands => commands.Create(false))
It is then possible to grab this from the model like:
.ToolBar(commands => commands.Create(Model.EnableCreate))

Regards,
Mattias
Mattias
Top achievements
Rank 1
 answered on 31 Jan 2013
2 answers
106 views
Is there a way to get the current mode of the grid inside a column template? I want to check if the grid is in edit mode within a column template so I can act on it. 
Dan
Top achievements
Rank 1
 answered on 30 Jan 2013
3 answers
317 views
I have some grids using telerik MVC controls that I am trying to move to Kendo.
They handle large amounts of data so I want to use custom binding.

so far I have got the grid to load with data, but when trying to sort or filter I get sorts or filter is null.
Where am I going wrong,

Thanks

My grid
@code
    Dim grid As Kendo.Mvc.UI.Grid(Of BO.Models.Location) = Html.Kendo.Grid(Of BO.Models.Location)(Model.Locations) _
    .Name("LocationGrid") _
    .EnableCustomBinding(True) _
    .Columns(Sub(c)
                     c.Bound(Function(b) b.ZipCode)
                     c.ForeignKey(Function(f) f.StateId, Model.States.AsEnumerable, "Id", "Name")
                     c.Bound(Function(b) b.City)
                     c.Bound(Function(b) b.Longitude)
                     c.Bound(Function(b) b.Latitude)
                     'c.Command(Sub(m)
                     '                  m.Edit()
                     '                  'm.Custom("Details").Text("Details").Action("details", "location", New With {.area = "admin"})
                     '          End Sub).Width(210)
             End Sub) _
    .DataSource(Function(d) _
                     d.Ajax.Read("GetLocations", "Location", New With {.area = "admin"}).Update("UpdateLocation", "Location", New With {.area = "admin"}) _
                     .ServerOperation(True).Model(Sub(model) model.Id(Function(p) p.LocationId)).Total(Model.RecordCount)).Sortable().Filterable().Pageable()
 
 
 
    grid.Render()
End Code

Controller

Function Index() As ActionResult
    Return View(New BO.Models.LocationGridModel)
End Function
 
Function GetLocations(<Kendo.Mvc.UI.DataSourceRequestAttribute(Prefix:="Grid")> request As Kendo.Mvc.UI.DataSourceRequest) As JsonResult
    If request.PageSize.Equals(0) Then
        request.PageSize = 10
    End If
    Dim LocationGridModel As BO.Models.LocationGridModel = New BO.Models.LocationGridModel(request)
 
    Return Json(LocationGridModel.Locations.ToList)
End Function
 
 
<HttpPost>
Function UpdateLocation(id As Integer, collection As FormCollection, <Kendo.Mvc.UI.DataSourceRequestAttribute(Prefix:="Grid")> request As Kendo.Mvc.UI.DataSourceRequest) As JsonResult
    Dim Location As EF.Location = db.Locations.Find(id)
    Try
        UpdateModel(Location)
        db.SaveChanges()
    Catch ex As Exception
        Throw
    End Try
    Dim LocationGridModel As BO.Models.LocationGridModel = New BO.Models.LocationGridModel(request)
    Return Json(LocationGridModel.Locations.ToList)
End Function

LocationGridModel
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Imports Kendo.Mvc
 
Namespace Models
    Public Class LocationGridModel
 
        Public Property PageSize As Integer = 15
        Private _Locations As ReadOnlyCollection(Of BO.Models.Location)
        Public ReadOnly Property Locations As ReadOnlyCollection(Of BO.Models.Location)
            Get
                Return _Locations
            End Get
        End Property
        Public Property States As ReadOnlyCollection(Of BO.Models.StateDropDown)
        Public Property RecordCount As Integer
 
        Sub New()
            Using db As EF.HomelyEntities = New EF.HomelyEntities
                Me._Locations = ConvertToDbMoldelsLocation(db.Locations.OrderBy(Function(o) o.LocationId).Take(Me.PageSize))
                Me.RecordCount = db.Locations.Count
                Me.States = New ReadOnlyCollection(Of BO.Models.StateDropDown)(db.States.Where(Function(w) w.CountryId.Equals(2)).OrderBy(Function(o) o.Name).Select(Function(s) New BO.Models.StateDropDown With {.Id = s.StateId, .Name = s.Name}).ToList)
            End Using
        End Sub
 
        Sub New(request As UI.DataSourceRequest)
            Using db As EF.HomelyEntities = New EF.HomelyEntities
                Me._Locations = GetData(request, Me.RecordCount)
                Me.States = New ReadOnlyCollection(Of BO.Models.StateDropDown)(db.States.Where(Function(w) w.CountryId.Equals(2)).OrderBy(Function(o) o.Name).Select(Function(s) New BO.Models.StateDropDown With {.Id = s.StateId, .Name = s.Name}).ToList)
            End Using
        End Sub
 
        ''' <summary>
        ''' Reterns location data for kendo grid
        ''' </summary>
        ''' <param name="request">Kendo.Mvc.UI.DataSourceRequest</param>
        ''' <param name="recordCount">Integer</param>
        ''' <returns>ReadOnlyCollection(Of BO.Models.Location)</returns>
        ''' <remarks></remarks>
        Private Function GetData(ByVal request As Kendo.Mvc.UI.DataSourceRequest, ByRef recordCount As Integer) As ReadOnlyCollection(Of BO.Models.Location)
            Using db As EF.HomelyEntities = New EF.HomelyEntities
                'todo remove recordcount
                Dim data As IQueryable(Of EF.Location) = db.Locations
 
                If request.Sorts.Any Then
                    For Each sortDescriptor As SortDescriptor In request.Sorts
                        data = SortLocation(sortDescriptor, data)
                    Next
                Else
                    data = data.OrderBy(Function(o) o.LocationId)
                End If
                If request.Filters.Any() Then
                    data = data.Where(ExpressionBuilder.Expression(Of EF.Location)(request.Filters))
                End If
                recordCount = data.Count
                If request.PageSize > 0 Then
                    data = data.Skip((request.Page - 1) * request.PageSize)
                    data = data.Take(request.PageSize)
                End If
                Return ConvertToDbMoldelsLocation(data)
            End Using
 
        End Function
 
        Private Function SortLocation(sortDescriptor As SortDescriptor, data As IQueryable(Of EF.Location)) As IQueryable(Of EF.Location)
            If sortDescriptor.SortDirection.Equals(ListSortDirection.Ascending) Then
                Select Case sortDescriptor.Member
                    Case "LocationId"
                        data = data.OrderBy(Function(o) o.LocationId)
                    Case "ZipCode"
                        data = data.OrderBy(Function(o) o.ZipCode)
                    Case "StateId"
                        data = data.OrderBy(Function(o) o.StateId)
                    Case "Latitude"
                        data = data.OrderBy(Function(o) o.Latitude)
                    Case "Longitude"
                        data = data.OrderBy(Function(o) o.Longitude)
                    Case "City"
                        data = data.OrderBy(Function(o) o.City)
                End Select
            Else
                Select Case sortDescriptor.Member
                    Case "LocationId"
                        data = data.OrderByDescending(Function(o) o.LocationId)
                    Case "ZipCode"
                        data = data.OrderByDescending(Function(o) o.ZipCode)
                    Case "StateId"
                        data = data.OrderByDescending(Function(o) o.StateId)
                    Case "Latitude"
                        data = data.OrderByDescending(Function(o) o.Latitude)
                    Case "Longitude"
                        data = data.OrderByDescending(Function(o) o.Longitude)
                    Case "City"
                        data = data.OrderByDescending(Function(o) o.City)
                End Select
            End If
            Return data
        End Function
 
        ''' <summary>
        ''' Converts to poco model to use in grid
        ''' </summary>
        ''' <param name="data">IQueryable(Of EF.Location)</param>
        ''' <returns>ReadOnlyCollection(Of BO.Models.Location)</returns>
        ''' <remarks></remarks>
        Private Shared Function ConvertToDbMoldelsLocation(data As IQueryable(Of EF.Location)) As ReadOnlyCollection(Of BO.Models.Location)
            Return New ReadOnlyCollection(Of BO.Models.Location)(data.Select(Function(s) New BO.Models.Location With {
                                   .ZipCode = s.ZipCode,
                                   .StateId = s.StateId,
                                   .City = s.City,
                                   .Longitude = s.Longitude,
                                   .Latitude = s.Latitude,
                                   .LocationId = s.LocationId
                               }).ToList)
        End Function
 
 
 
    End Class
End Namespace

Alan Mosley
Top achievements
Rank 1
 answered on 30 Jan 2013
1 answer
424 views
I have some comboboxes that cascade from one to the other.  I would also like to be able to filter based on partial text entered into the combobox.  This isn't working out of the box, so I'm working on coding it server-side.  It appears that the text is being posted to the servers, but I can't find a server-side object to bind to the post.  Here's what's being posted.  In my case "Value" is the value of the parent combobox this combobox is cascading from.

  1. filter[logic]:
    and
  2. filter[filters][0][field]:
    Value
  3. filter[filters][0][operator]:
    eq
  4. filter[filters][0][value]:
    2
  5. filter[filters][1][value]:
    purity
  6. filter[filters][1][field]:
    Text
  7. filter[filters][1][operator]:
    contains
  8. filter[filters][1][ignoreCase]:
    true

I took a look at IFilterDescriptor, FilterDescriptor, and CompositeFilterDescriptor.  They seem to have similar fields to those shown above, but they aren't binding when I try to use them as input to my Action method.  I haven't had any luck finding a similar thread or any documentation around this.

Again, my end goal is to have cascading comboboxes without losing the ability to filter by text entered, so if there's any advise there, I'm all ears.  Also, any advice on how to bind the posted filter info is welcome.
Thanks,
--Evan


Also, here's the definition of my comboboxes as a side note:
<tr>
            <td class="formTableLabel">Price Publisher: </td>
            <td>
                @(Html.Kendo().ComboBox()
                    .Name("PricePublisherId")
                    .DataValueField("Value")
                    .DataTextField("Text")
                    .BindTo(Model.ReferenceData.PricePublisherList)
                    .Filter(FilterType.Contains)
                    .HtmlAttributes(new { required = "required", validationMessage = "Please select an option." }))
            </td>
        </tr>
        <tr>
            <td class="formTableLabel">Price Instrument: </td>
            <td>
                @(Html.Kendo().ComboBox()
                    .Name("PriceInstrumentId")
                    .DataValueField("Value")
                    .DataTextField("Text")
                    .Placeholder("(Empty)")
                    .DataSource(source =>
                    {
                        source.Read(read =>
                        {
                            read.Action("GetPriceInstrumentList", "TradeEntry").Data("priceInstrumentListJSON").Type(HttpVerbs.Post);
                        })
                        .ServerFiltering(true);
                    })
                    .Enable(false)
                    .AutoBind(false)
                    .CascadeFrom("PricePublisherId")
                    .Filter(FilterType.Contains)
                    .HtmlAttributes(new { required = "required", validationMessage = "Please select an option." }))
            </td>
        </tr>
Petur Subev
Telerik team
 answered on 30 Jan 2013
Narrow your results
Selected tags
Tags
+? more
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
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?