Telerik Forums
UI for ASP.NET MVC Forum
1 answer
25 views

  @(Html.Kendo().Grid<RVNLMIS.Models.ListMasterBOQResourceCalc>()
   .Name("ResourceTypeGrid")
   .Columns(columns =>
   {

       // Resource Type column
       columns.Bound(c => c.RsrcType)
           .Title("Resource Type")
           .ClientTemplate("#= RsrcType ? RsrcType.ResourceTypeName : '' #")
           .EditorTemplateName("ClientResource")
           .Sortable(false)
           .HtmlAttributes(new { style = "text-align:left" })
           .HeaderHtmlAttributes(new { style = "text-align:left" })
           .Width(120)
           ;

       // Resource Name column
       columns.Bound(c => c.drpResource)
           .Title("Resource")
           .ClientTemplate("#= drpResource ? drpResource.ResourceName : ''#")
           .EditorTemplateName("ClientSubResources")
           .Sortable(false)
           .HtmlAttributes(new { style = "text-align:left" })
           .HeaderHtmlAttributes(new { style = "text-align:left" })
           .Width(120);

       // Quantity column
       columns.Bound(c => c.rsrcQty)
           .Title("Quantity")
           .HtmlAttributes(new { style = "text-align:right" })
           .HeaderHtmlAttributes(new { style = "text-align:right" })
           .Width(70)
           .Format("{0:N2}");

       // Wastage Percentage column
       columns.Bound(c => c.wastagePct)
           .Title("Wastage %")
           .HtmlAttributes(new { style = "text-align:right" })
           .HeaderHtmlAttributes(new { style = "text-align:right" })
           .Width(60);

       // Total Quantity column
       columns.Bound(c => c.TotalQty)
           .Title("Total Qty")
           .HtmlAttributes(new { style = "text-align:right" })
           .HeaderHtmlAttributes(new { style = "text-align:right" })
           .Width(80)
           .Format("{0:N2}");

       // Unit column
       columns.Bound(c => c.Unit)
           .Title("Unit")
           .HtmlAttributes(new { style = "text-align:left" })
           .HeaderHtmlAttributes(new { style = "text-align:left" })
           .Width(60);

       // Base Rate column
       columns.Bound(c => c.BaseRate)
           .Title("Base Rate")
           .HtmlAttributes(new { style = "text-align:right" })
           .HeaderHtmlAttributes(new { style = "text-align:right" })
           .Width(80)
           .Format("{0:N2}");

       // Total Rate column
       columns.Bound(c => c.TotalRate)
           .Title("Resource Amount")
           .HtmlAttributes(new { style = "text-align:right" })
           .HeaderHtmlAttributes(new { style = "text-align:right" })
           .Width(100)
           .Format("{0:N2}");
       columns.Command(command => command.Destroy()).Width(150);
   })
   .ToolBar(t =>
   {
       t.Create().HtmlAttributes(new { style = "float:right; margin: 5px;" });
       t.Save().HtmlAttributes(new { style = "float:right; margin: 5px;" });
   })
   .Editable(editable => editable.Mode(GridEditMode.InCell))
   .Pageable() // Pagination enabled
   .Sortable() // Sorting enabled
   .Scrollable() // Scrollable grid
   .HtmlAttributes(new { style = "height:500px;" })
   .DataSource(dataSource => dataSource
       .Ajax()
       .Batch(true) // Batch editing
       .ServerOperation(false) // Client-side operations
       .Model(model =>
       {
           model.Id(p => p.AutoID); // Set primary key
           model.Field(p => p.AutoID).Editable(false); // Disable editing for AutoID
           model.Field(p => p.RsrcType).DefaultValue(
                       ViewData["defaultResourceType"] as RVNLMIS.Controllers.Sub_BOQController.ResourceTypeModel);
           model.Field(p => p.drpResource).DefaultValue(new RVNLMIS.Controllers.Sub_BOQController.DrpResourceModel
           {
               ResourceName = "Select Resource",
               ResourceID = 0
           });
       })
       .PageSize(20) // Set page size
       .Read(read => read.Action("GetBOQResource_Details", "Sub_BOQ").Data("getBOQId"))
       .Create(create => create.Action("EditingCustom_Create", "Sub_BOQ"))
       .Update(update => update.Action("EditingCustom_Update", "Sub_BOQ"))
       .Destroy(destroy => destroy.Action("EditingCustom_Destroy", "Sub_BOQ"))
   )
)

Above is grid code , the tool bar is not showing at the top of the grid .

It should show like below example.

 

Eyup
Telerik team
 answered on 22 Nov 2024
1 answer
40 views
public class ListMasterBOQResourceCalc
{
    public Nullable<int> BOQId { get; set; }
    public int AutoID { get; set; }
    public Nullable<int> RsrcTypeID { get; set; }
    public int raRsrcID { get; set; }
    public Nullable<decimal> rsrcQty { get; set; }
    public Nullable<decimal> wastagePct { get; set; }
    public Nullable<int> DisciplineID { get; set; }
    public string raRsrcName { get; set; }
    public string Unit { get; set; }
    public Nullable<decimal> BaseRate { get; set; }
    public string TotalQty { get; set; }
    public string TotalRate { get; set; }

    [Required]
    [UIHint("ClientResource")]
    public ResourceTypeModel RsrcType { get; set; }

    [Required]
    [UIHint("ClientSubResources")]
    public DrpResourceModel drpResource { get; set; }

}

 

@(Html.Kendo().Grid<RVNLMIS.Models.ListMasterBOQResourceCalc>()
        .Name("ResourceTypeGrid")
        .Columns(columns =>
        {

            // Resource Type column
            columns.Bound(c => c.RsrcType)
                .Title("Resource Type")
                .ClientTemplate("#= RsrcType ? RsrcType.ResourceTypeName : '' #")
                .EditorTemplateName("ClientResource")
                .Sortable(false)
                .HtmlAttributes(new { style = "text-align:left" })
                .HeaderHtmlAttributes(new { style = "text-align:left" })
                .Width(120)
                ;

            // Resource Name column
            columns.Bound(c => c.drpResource)
                .Title("Resource")
                .ClientTemplate("#= drpResource ? drpResource.ResourceName : ''#")
                .EditorTemplateName("ClientSubResources")
                .Sortable(false)
                .HtmlAttributes(new { style = "text-align:left" })
                .HeaderHtmlAttributes(new { style = "text-align:left" })
                .Width(120);

            // Quantity column
            columns.Bound(c => c.rsrcQty)
                .Title("Quantity")
                .HtmlAttributes(new { style = "text-align:right" })
                .HeaderHtmlAttributes(new { style = "text-align:right" })
                .Width(70)
                .Format("{0:N2}");

            // Wastage Percentage column
            columns.Bound(c => c.wastagePct)
                .Title("Wastage %")
                .HtmlAttributes(new { style = "text-align:right" })
                .HeaderHtmlAttributes(new { style = "text-align:right" })
                .Width(60);

            // Total Quantity column
            columns.Bound(c => c.TotalQty)
                .Title("Total Qty")
                .HtmlAttributes(new { style = "text-align:right" })
                .HeaderHtmlAttributes(new { style = "text-align:right" })
                .Width(80)
                .Format("{0:N2}");

            // Unit column
            columns.Bound(c => c.Unit)
                .Title("Unit")
                .HtmlAttributes(new { style = "text-align:left" })
                .HeaderHtmlAttributes(new { style = "text-align:left" })
                .Width(60);

            // Base Rate column
            columns.Bound(c => c.BaseRate)
                .Title("Base Rate")
                .HtmlAttributes(new { style = "text-align:right" })
                .HeaderHtmlAttributes(new { style = "text-align:right" })
                .Width(80)
                .Format("{0:N2}");

            // Total Rate column
            columns.Bound(c => c.TotalRate)
                .Title("Resource Amount")
                .HtmlAttributes(new { style = "text-align:right" })
                .HeaderHtmlAttributes(new { style = "text-align:right" })
                .Width(100)
                .Format("{0:N2}");
            columns.Command(command => command.Destroy()).Width(150);
        })
        .ToolBar(toolBar =>
        {
            toolBar.Create(); // Adds a Create button
            toolBar.Save();   // Adds a Save button
        })
        .Editable(editable => editable.Mode(GridEditMode.InCell))
        .Pageable() // Pagination enabled
        .Sortable() // Sorting enabled
        .Scrollable() // Scrollable grid
        .HtmlAttributes(new { style = "height:550px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .Batch(true) // Batch editing
            .ServerOperation(false) // Client-side operations
            .Model(model =>
            {
                model.Id(p => p.AutoID); // Set primary key
                model.Field(p => p.AutoID).Editable(false); // Disable editing for AutoID
                model.Field(p => p.RsrcType).DefaultValue(
                            ViewData["defaultResourceType"] as RVNLMIS.Controllers.Sub_BOQController.ResourceTypeModel);
                model.Field(p => p.drpResource).DefaultValue(new RVNLMIS.Controllers.Sub_BOQController.DrpResourceModel
                {
                    ResourceName = "Select Resource",
                    ResourceID = 0
                });
            })
            .PageSize(20) // Set page size
            .Read(read => read.Action("GetBOQResource_Details", "Sub_BOQ").Data("getBOQId"))
            .Create(create => create.Action("EditingCustom_Create", "Sub_BOQ"))
            .Update(update => update.Action("EditingCustom_Update", "Sub_BOQ"))
            .Destroy(destroy => destroy.Action("EditingCustom_Destroy", "Sub_BOQ"))
        )
     )

ClientResource.cshtml

public class ResourceTypeModel
{
    public int ResourceTypeId { get; set; }
    public string ResourceTypeName { get; set; }
}

@model RVNLMIS.Controllers.Sub_BOQController.ResourceTypeModel

@(Html.Kendo().DropDownListFor(m => m)
    .Name("drpRsrcTypeId")
    .OptionLabel("Select Resource Type")
        .DataValueField("ResourceTypeId")
        .DataTextField("ResourceTypeName")
        .BindTo((IEnumerable<RVNLMIS.Controllers.Sub_BOQController.ResourceTypeModel>)ViewData["listResourceTypes"])
        .Events(e => e.Change("onResourceTypeChange"))
)

ClientSubResources.cshtml

public class DrpResourceModel
{
    public int ResourceID { get; set; }
    public string ResourceName { get; set; }
}

@model RVNLMIS.Controllers.Sub_BOQController.DrpResourceModel


@(Html.Kendo().DropDownListFor(m => m)
    .Name("drpRsrcId")
    .OptionLabel("Select Resource")
    .DataTextField("raRsrcName")
    .DataValueField("raRsrcID")
    .CascadeFrom("drpRsrcTypeId") // Cascade from the Category dropdown
    .DataSource(dataSource => dataSource
        .Read(read => read.Action("GetResourcesByTypeId", "Sub_BOQ").Data("getRsrcTypeID")) // Action to fetch subcategories
    )
    .Events(e => e.Change("onResourceChange"))
)

 

After selecting the values from dropdown , the values are not remain selected & also not passing to create method. The default values are passing to create method.

 

Eyup
Telerik team
 answered on 21 Nov 2024
1 answer
68 views

Hi,

I have a Kendo Menu with the menu items, when user will click on the menu it should show the Kendo panels vertically and then again click on the menu should hide the panels within that menu. On Click on the Panelbar items should show the respective pages.

Attached is the screenshot for the reference.

Eyup
Telerik team
 answered on 19 Nov 2024
1 answer
121 views

Yea, I know...that's a lot to ask.  I've gotten very close.  My code is below.

What I need is a tooltip that renders the results of a partial view when user hovers a specific column (column #6) in the kendo grid (mvc razor).  I need to show a list of active orders for the given row in the grid.

If the row.OnOrder = 0, I see the proper tooltip text "- no orders found -".

But when row.OnOrder > 0 and the AJAX call is necessary, the tooltip just shows an empty tooltip box (shown in screenshot).  In Chrome Network tab I can see the ajax call made, and I can see the html response of the partial view.  So I'm fairly certain the partial call is working and responding correctly.  VS debugger shows the controller gets hit and returns the view.  But the result doesn't populate to the tooltip.  I just get a little grey box.

I feel like I'm missing some really, really small but I can't tell what.  Any suggestions?  The partial view does have a kendo grid in it as well, if that matters.

document.ready():

            $("#grdStockLevels").kendoTooltip({
                filter: "td:nth-child(6)", // Adjust the selector to target the specific column
                position: "top",
                content: function (e) {
                    var dataItem = $("#grdStockLevels").data("kendoGrid").dataItem(e.target.closest("tr"));

                    if (dataItem.OnOrder > 0) {
                        return $.ajax({
                            url: '@Url.Action("OpenOrderList", "Purchasing")',
                            type: 'GET',
                            async: false,
                            data: {
                                productId: dataItem.ProductId,
                                optionList: dataItem.OptionList
                            }, 
                            dataType: 'html'
                        });
                    } else {
                        return "- no open orders -";
                    }

                }
            }).data("kendoTooltip");

 

Controller partial view:

        public ActionResult OpenOrderList(int productId, string optionList)
        {
            // validate product
            Product p = _productRepo.Load(productId);
            if (p == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest);

            // locate open order items
            var orderItemList = p.SupplierOrderItems.Where(z => z.OptionList == optionList && z.Order.OrderStatus.IsActive).ToList();

            IList<SupplierOrderModel> model = orderItemList.Select(x => new SupplierOrderModel()
            {
                OrderNumber = x.Order.OrderNumber,
                EtaDate = x.Order.EtaDate,
                SupplierShipMethodId = x.QtyRemain
            }).ToList();

            return PartialView("_OpenOrderListPopup", model);
        }

 

partial view:

@model IList<SupplierOrderModel>


@(Html.Kendo().Grid(Model)
    .Name("grdOpenOrderList")
    .Columns(columns =>
    {
        columns.Bound(p => p.OrderNumber).Title("Order Number");
        columns.Bound(p => p.EtaDate).Title("ETA Date").Format("{0:MM/dd/yyyy}");
        columns.Bound(p => p.PurchaseMethodId).Title("Qty On Order");
    })
    .HtmlAttributes(new { style = "height: 550px;" })
)

Ivaylo
Telerik team
 answered on 12 Nov 2024
1 answer
93 views

Hi!
I am upgrading my .NET 4.8.1 MVC project from 2013 to 2024.
However, I am struggling to do  the following:
1) In old setup (2013), there were .css files which were referenced in the Layout file.
Example: "https://da7xgjtj801h2.cloudfront.net/2014.3.1119/styles/kendo.silver.min.css"

After upgrading to 2024 (via Telerik extension), I cannot find a theme with the same name locally and I cannot use the same CDN link (with modified package version of course).

I found the following info: CDN Info but was not able to follow through and my styles are still not applied.

Here are my original CDN links that need to be updated to 2024.3.1015
https://da7xgjtj801h2.cloudfront.net/2014.3.1119/styles/kendo.common.min.css - Edit: I have managed to find a link for this (or similar version) on Kendo Dojo repo

https://da7xgjtj801h2.cloudfront.net/2014.3.1119/styles/kendo.rtl.min.css - Edit: I have managed to find a link for this (or similar version) on Kendo Dojo repo

https://da7xgjtj801h2.cloudfront.net/2014.3.1119/styles/kendo.silver.min.css - Have not managed to find this (please help)

https://da7xgjtj801h2.cloudfront.net/2014.3.1119/styles/kendo.dataviz.silver.min.css - Have not managed to find this (please help)

Above those, I included the licence snippet:

   <script src="@Html.Raw("https://unpkg.com/@progress/kendo-licensing/dist/index.js")"></script>
   <script>KendoLicensing.setScriptKey('myLicence');</script>

 

How do I fix my links? Any help is greatly appreciated.

Thanks!

Ivan Danchev
Telerik team
 answered on 12 Nov 2024
2 answers
98 views

Using the following script to build a Filter and DataSource.


When I click the Apply button I would expect the Filter Property in the method to be populated. See screen print below

    <script>
        $(document).ready(function () {
            var dataSource = new kendo.data.DataSource({
                transport: {
                    read: {
                        dataType: "json",
                        url: "/Home/Products_Read"
                    }
                },
                serverFiltering: true,
                pageSize: 4,
                schema: {
                    model: {
                        fields: {
                            ProductName: { type: "string" },

                        }
                    }
                }
            });

            $("#filter").kendoFilter({
                dataSource: dataSource,
                expressionPreview: true,
                applyButton: true,
                fields: [
                    { name: "ProductName", type: "string", label: "ProductName" },
                ],
                expression: {
                    logic: "or",
                    filters: [

                        { field: "ProductName", value: "Chai", operator: "contains" }
                    ]
                }
            });

        });
    </script>

 

 

  
Barış Can
Top achievements
Rank 2
Iron
 answered on 11 Nov 2024
3 answers
61 views

We have an HTML5 page, with a Kendo MVC Grid on it via Razor.  There is an editable column on the grid.  It does not have an editor template or anything special on it.  It is just a basic text column, which is editable(true).  When using a keyboard tab button, or a mouse, everything works fine.  If you use a touch device (phone / tablet) and leave the open cell via touch, the value you enter is cleared.

columns.Bound(p => p.Comment).Title("Comment").Width("120px");

One note:  if the column had a value, before you touch clicked into it, touch clicking out of the column doesn't clear the value.  If you touch click into a column with a value, then you add to the value, touch clicking out of the field using touch resets the value back to what it was.

So, clearly, it seems like the cell's save value event is not getting triggered when using touch to leave the cell.  This behavior isn't a problem when it is just a textbox in a form.  It just seems to happen when in an editable grid.

How can I make sure the updating event happens when using touch to leave the cell?

Stephen
Top achievements
Rank 1
Iron
 updated answer on 07 Nov 2024
1 answer
36 views

Is it possible to sum a column without using Ajax in the datasource?

@(Html.Kendo().Grid<myModel>(myEnumerableViewModel )
.Name("myGrid")
.Columns(c =>
{
c.Bound(x => x.myColumn);
})
)
Mihaela
Telerik team
 answered on 31 Oct 2024
1 answer
62 views

I have a grid popup edit template that includes a Kendo dropdown.  I need to pass a model property value as the parameter to the Read() method of the dropdown.  But the model is null when the Read() method gets called.   So the value is always 0.  

I've defined the Field in the parent grid.  I even added it as a column too.  Model.ProductId is always 0.

How do I pass a value from the popup editor model to the controller for the dropdown?

                    @(Html.Kendo().DropDownList()
                        .Name("WarehouseId")
                        .OptionLabel("Select a warehouse...")
                        .HtmlAttributes(new { style = "width: 100%" })
                        .DataTextField("Text")
                        .DataValueField("Value")
                        .Value("-1")
                        .DataSource(source =>
                        {
                            source.Read(read =>
                            {
                                read.Action("Inventory_Warehouse_Read", "Purchasing", new { productId = @Model.ProductId});
                            });
                        })
                        .Height(400)
                        )

Mihaela
Telerik team
 answered on 29 Oct 2024
1 answer
43 views

Hi, I am new to this, so I apologise if this is a simple question/answer.

I have been asked to "learn while doing" on some code .

at the moment, if a filter is used on a ride, and it return matches, the first row is selected, and that data is then used to help get data for the tab strip.

If the filter returns on rows, the tapstrip still has the data showing for the previous (still selected ? ) row .

 

I have tried

            grid.bind("dataBound", function () {
                var displayedRows = grid.tbody.find(">tr");
               var tabStrip = $("#details").data("kendoTabStrip");
					
                if (displayedRows.length === 0) {
                    // Display the length of displayed rows for troubleshooting
                    /*                    alert("Number of displayed rows: " + displayedRows.length); // Show in alert for easier visibility*/
                    //var tabStrip = $("#details").data("kendoTabStrip");
                    tabStrip.contentElements.empty(); // Clear tab content
                    tabStrip.contentElements.append('<div class="no-data">No Data Available</div>'); // Add "No Data Available" message
                }
                else {
                }
            });

and this works for the First time it finds length = 0, but if I clear the filter and do a search that has results, or clear the filter and select the first row in #grid, the tabstrip is not updated.

 

please can someone advise what I need in the else clause, as anything gi put in here either doesn't work, or "breaks" the other options grid.binds i have in that sets the default search filter on one column to "contains". 

 

thanks

Gerald
Top achievements
Rank 1
Iron
Iron
 answered on 24 Oct 2024
Narrow your results
Selected tags
Tags
+? more
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Iron
Krasimir
Top achievements
Rank 3
Iron
Iron
Iron
Shawn
Top achievements
Rank 1
Iron
Javier
Top achievements
Rank 1
Iron
Jean-François
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Anislav
Top achievements
Rank 6
Silver
Bronze
Iron
Krasimir
Top achievements
Rank 3
Iron
Iron
Iron
Shawn
Top achievements
Rank 1
Iron
Javier
Top achievements
Rank 1
Iron
Jean-François
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?