Telerik Forums
UI for ASP.NET Core Forum
2 answers
219 views

I am binding the data from a datatable but it is always binding the data against the current date.If i have set the selected date is something else also.

 

 

Code

using System;
using System.Text;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    { 
        if(!Page.IsPostBack)
        {
            dtpDate.SelectedDate = DateTime.Today.AddDays(0);
        //    OTTable();
        }
     
        //RadScheduler1.SelectedDate = (DateTime.Today.AddDays(2));
    }
    private void OTTable()
    {
        RadScheduler1.DataSource = null;
        RadScheduler1.DataBind();
        // Create a new Data Table.
        System.Data.DataTable OTTheater = new DataTable("OTTheater");
        DataColumn dtColumn;
        DataRow myDataRow;
        // Create id Column
        dtColumn = new DataColumn();
        dtColumn.DataType = System.Type.GetType("System.Int32");
        dtColumn.ColumnName = "TheaterId";
        dtColumn.Caption = "TheaterId";
        dtColumn.ReadOnly = false;
        dtColumn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTTheater.Columns.Add(dtColumn);

        // create Name column.
        dtColumn = new DataColumn();
        dtColumn.DataType = System.Type.GetType("System.String");
        dtColumn.ColumnName = "TheatreName";
        dtColumn.Caption = "TheatreName";
        dtColumn.AutoIncrement = false;
        dtColumn.ReadOnly = false;
        dtColumn.Unique = false;

        // Add Address column to the table.
        OTTheater.Columns.Add(dtColumn);

        
        
        // Add rows to the custTable using NewRow method
        // I add three customers with their addresses, name and id
        myDataRow = OTTheater.NewRow();
        myDataRow["TheaterId"] = 1;
        myDataRow["TheatreName"] = "OT1";
        
        OTTheater.Rows.Add(myDataRow);

        myDataRow = OTTheater.NewRow();
        myDataRow["TheaterId"] = 2;
        myDataRow["TheatreName"] = "OT2";
        
        OTTheater.Rows.Add(myDataRow);


        System.Data.DataTable OTPatientDetail = new DataTable("OTPatientDetail");
        DataColumn dtOTPatientDetailn;
        DataRow myDataRowOTPatientDetail;
        // Create id Column
        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.Int32");
        dtOTPatientDetailn.ColumnName = "TheaterId";
        dtOTPatientDetailn.Caption = "TheaterId";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);

        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.String");
        dtOTPatientDetailn.ColumnName = "TheatreName";
        dtOTPatientDetailn.Caption = "TheatreName";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);


        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.String");
        dtOTPatientDetailn.ColumnName = "FromTime";
        dtOTPatientDetailn.Caption = "FromTime";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);

        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.String");
        dtOTPatientDetailn.ColumnName = "ToTime";
        dtOTPatientDetailn.Caption = "ToTime";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);

        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.String");
        dtOTPatientDetailn.ColumnName = "Subject";
        dtOTPatientDetailn.Caption = "Subject";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);

        dtOTPatientDetailn = new DataColumn();
        dtOTPatientDetailn.DataType = System.Type.GetType("System.String");
        dtOTPatientDetailn.ColumnName = "TooTipText";
        dtOTPatientDetailn.Caption = "TooTipText";
        dtOTPatientDetailn.ReadOnly = false;
        //dtOTPatientDetailn.Unique = true;
        // Add id column to the DataColumnCollection.
        OTPatientDetail.Columns.Add(dtOTPatientDetailn);


       


        //TheaterId, TheaterName, FromTime, ToTime, Subject, TooTipText

        myDataRowOTPatientDetail = OTPatientDetail.NewRow();
        myDataRowOTPatientDetail["TheaterId"] = 1;
        myDataRowOTPatientDetail["TheatreName"] = "OT1";
        myDataRowOTPatientDetail["FromTime"] = "10:00";
        myDataRowOTPatientDetail["ToTime"] = "11:00";
        myDataRowOTPatientDetail["Subject"] = "Test Patient";
        myDataRowOTPatientDetail["TooTipText"] = "Test Patient";
     
        OTPatientDetail.Rows.Add(myDataRowOTPatientDetail);

        myDataRowOTPatientDetail = OTPatientDetail.NewRow();
        myDataRowOTPatientDetail["TheaterId"] = 2;
        myDataRowOTPatientDetail["TheatreName"] = "OT2";
        myDataRowOTPatientDetail["FromTime"] = "09:00";
        myDataRowOTPatientDetail["ToTime"] = "11:00";
        myDataRowOTPatientDetail["Subject"] = "Test Patient";
        myDataRowOTPatientDetail["TooTipText"] = "Test Patient";
        
        OTPatientDetail.Rows.Add(myDataRowOTPatientDetail);





 
        DataTable Dt = new DataTable();

   
        RadScheduler1.SelectedView = SchedulerViewType.DayView;
        RadScheduler1.SelectedDate = dtpDate.SelectedDate.Value;
        RadScheduler1.WorkDayStartTime = TimeSpan.Parse("06:00");
        RadScheduler1.WorkDayEndTime = TimeSpan.Parse("00:00");

        RadScheduler1.DayStartTime = TimeSpan.Parse("08:00");
        RadScheduler1.DayEndTime = TimeSpan.Parse("00:00");
       
        RadScheduler1.MinutesPerRow = int.Parse("10");
        //RadScheduler1.TimeLabelRowSpan = 30 / int.Parse(OTPatientDetail.Rows[0]["ToTime"].ToString());
      
        RadScheduler1.DataKeyField = "TheaterId";
        RadScheduler1.DataStartField = "FromTime";
        RadScheduler1.DataEndField = "ToTime";
        RadScheduler1.DataSubjectField = "Subject";

        //RadScheduler1.GroupBy = "Resource";
        //RadScheduler1.DataRecurrenceField = "RecurrenceRule";
        //RadScheduler1.DataRecurrenceParentKeyField = "RecurrenceParentId";
        RadScheduler1.ResourceTypes.Clear();
        ResourceType rt = new ResourceType("Resource");
        rt.DataSource = OTTheater;
        rt.KeyField = "TheaterId";
        rt.ForeignKeyField = "TheaterId";
        rt.TextField = "TheatreName";
        RadScheduler1.ResourceTypes.Add(rt);
       
        RadScheduler1.DataSource = OTPatientDetail;
        RadScheduler1.DataBind();
        
    }


    protected void RadScheduler1_AppointmentDataBound(object sender, SchedulerEventArgs e)
    {
        e.Appointment.ToolTip = e.Appointment.Attributes["TooTipText"];
    }

    protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
    {
        WebControl rsAptInner = (WebControl)e.Container.Parent;
        rsAptInner.Style["background"] = "#4286f4";
    }

    protected void RadScheduler1_TimeSlotContextMenuItemClicked(object sender, TimeSlotContextMenuItemClickedEventArgs e)
    {

    }

    protected void RadScheduler1_AppointmentContextMenuItemClicked(object sender, AppointmentContextMenuItemClickedEventArgs e)
    {

    }

    protected void RadScheduler1_NavigationCommand(object sender, SchedulerNavigationCommandEventArgs e)
    {

    }

    protected void RadScheduler1_TimeSlotCreated(object sender, TimeSlotCreatedEventArgs e)
    {

    }

    protected void as_Click(object sender, EventArgs e)
    {
       
        OTTable();
    }
    protected void OnSelectedDateChanged_dtpDate(object sender, EventArgs e)
    {
        try
        {

            as_Click(sender, e);
        }
        catch (Exception Ex)
        {
           
        }
    }
}

Peter Milchev
Telerik team
 answered on 05 Mar 2018
1 answer
80 views

Call code:

@(
            Html.Kendo().Grid<HomeFlat>()
                .Name("TestGridName")
                .DataSource(dataSource => dataSource
                    .Ajax()
                    .ServerOperation(true)
                    .Model(model =>
                        {
                            model.Id(p => p.TestProperty);
                            model.Field(p => p.TestProperty).Editable(false);
                        }
                    )
                    .Read(read => read.Action("Action_Test", "Home"))
                )
        )

 

The error you get with the build:

Critical error was detected at line 74, column 9 in http://localhost:XXXX/.
SCRIPT1002: Syntax error

Viktor Tachev
Telerik team
 answered on 01 Mar 2018
3 answers
1.2K+ views

Hello,

is there any possibility to add an additional value to the ToDataSourceResult in the Kendo read Action to pass that value with
the Ajax request to the Client?

return Json(result.ToDataSourceResult(request));

 

Background: we have a paged grid and in my action I pass the ID of a row which is added to the database with a Ajax form outside the grid
and calculate on the Server the page for that row so I want to pass that page as an additional value to the client:
https://www.telerik.com/forums/find-row-and-select-it-in-grouped-sorted-and-paged-grid#nF26Ya0-hkqiWAdfUkaSuQ

robert

Georgi
Telerik team
 answered on 28 Feb 2018
2 answers
242 views

What am I doing wrong.  I have a grid that refuses to post back to the proper action in the controller.  It continually goes back to the (get) Index action even though in the grid I am calling an action called Cleanup_Update.  When initially calling the page Cleanup_Read works fine.  Only when editing the inside of the grid and hitting save changes is it not going where it should go. 

Thanks in advance

 

View

@{
    ViewData["Title"] = "Index";
}
@Html.AntiForgeryToken()
 
<h2>Index</h2>
 
@(Html.Kendo().Grid<FacilityDataManagerMVC.Models.ViewModels.ErrorCleanup>
                ()
                .Name("grid")
                .Columns(columns =>
                {
                    columns.Bound(c => c.ID).Width(150);//.Hidden(true);
        columns.Bound(c => c.stationAssetID).Width(140).Filterable(ftb => ftb.Multi(true).CheckAll(true));
                    columns.Bound(c => c.stationID).Width(140).Filterable(ftb => ftb.Multi(true).CheckAll(true));
                    columns.Bound(c => c.errorType).Width(110).Filterable(ftb => ftb.Multi(true).CheckAll(true));
                    columns.Bound(c => c.readingDate).Width(110).Format("{0:MM/dd/yyyy}").Filterable(ftb => ftb.Multi(true).CheckAll(true));
        //columns.Bound(c => c.errorCorrected).Width(25);
        //change the column above to a checkbox
        columns.Bound(c => c.errorCorrected).ClientTemplate("<input type='checkbox' disabled='true' value='#= errorCorrected #' " + " # if (errorCorrected) { #" + "checked='checked'" + "# } #" + "/>");
                    columns.Bound(c => c.operatingHours).Width(25);
                    columns.Bound(c => c.totalDowntimeHours).Width(25);
                    columns.Bound(c => c.horsepowerHours).Width(25);
                    columns.Bound(c => c.fuelConsumed).Width(25);
                    columns.Bound(c => c.engineStartAttempts).Width(25);
                    columns.Bound(c => c.engineStartFailed).Width(25);
                    columns.Bound(c => c.engineStartSuccess).Width(25);
                    columns.Bound(c => c.startupDuration).Width(25);
                    columns.Bound(c => c.throughputMMCF).Width(25);
                    columns.Bound(c => c.averageUnitRPM).Width(25);
                    columns.Bound(c => c.oilUsageCompressor).Width(25);
                    columns.Bound(c => c.oilUsageEngine).Width(25);
                    columns.Bound(c => c.oilUsageManual).Width(25);
                })
                .ToolBar(toolbar =>
                {
                    toolbar.Save();
                })
                .Editable(editable => editable.Mode(GridEditMode.InCell))
                .Sortable()
                .Filterable()
                .Pageable()
                .Navigatable()
                .DataSource(dataSource => dataSource
                .Ajax()
                .Batch(true)
                .PageSize(20)
                .ServerOperation(false)
                .Events(events => events.Error("error_handler"))
                //set the fields to non-editable here
                .Model(model =>
                {
                    model.Field(p => p.ID).Editable(false);
                    model.Field(p => p.stationID).Editable(false);
                    model.Field(p => p.readingDate).Editable(false);
                    model.Field(p => p.errorType).Editable(false);
                    model.Field(p => p.stationAssetID).Editable(false);
                    model.Field(p => p.errorCorrected).Editable(false);
                })
                .Read(read => read.Action("Cleanup_Read", "Cleanup").Data("sendAntiForgery"))
                .Update(update => update.Action("Cleanup_Update", "Cleanup").Data("sendAntiForgery"))
                )
)
<script type="text/javascript">
    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);
        }
    }
</script>
<script type="text/javascript">
    function sendAntiForgery() {
        return { "__RequestVerificationToken": $('input[name=__RequestVerificationToken]').val() }
    }
</script>
<style>
    .k-readonly {
        color: gray;
    }
</style>

Controller

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using FacilityDataManagerMVC.Data;
using FacilityDataManagerMVC.Models.ViewModels;
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;
 
namespace FacilityDataManagerMVC.Controllers
{
 
    public class CleanupController : Controller
    {
        private readonly FacilityDataManagerMVCContext _context;
 
        public CleanupController(FacilityDataManagerMVCContext context)
        {
            _context = context;
        }
        // GET: Cleanup
        public ActionResult Index()
        {
            return View();
        }
 
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult IndexPost([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<ErrorCleanup> errors)
        {
 
            if (errors != null && ModelState.IsValid)
            {
                foreach (var product in errors)
                {
                    //productService.Update(product);
                    string x = "mystring";
                }
            }
 
            return Json(errors.ToDataSourceResult(request, ModelState));
        }
 
        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Cleanup_Update([DataSourceRequest] DataSourceRequest request, [Bind]IEnumerable<ErrorCleanup> errors)
        {
            if (errors != null && ModelState.IsValid)
            {
                foreach (var product in errors)
                {
                    //productService.Update(product);
                    string x = "mystring";
                }
            }
 
            return Json(errors.ToDataSourceResult(request, ModelState));
        }
       
        public IActionResult Cleanup_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(getScadaErrors().ToDataSourceResult(request));
        }
        private IEnumerable<ErrorCleanup> getScadaErrors()
        {
            using (_context)
            {
                return _context.ScadaErrors.Select(scadaError => new ErrorCleanup
                {
                    ID = scadaError.Id,
                    stationAssetID = scadaError.StationAssetId,
                    stationID = scadaError.StationId,
                    errorType = scadaError.ErrorType,
                    readingDate = scadaError.ReadingDate,
                    operatingHours = scadaError.OperatingHrs,
                    totalDowntimeHours = scadaError.TtlDowntimeHrs,
                    horsepowerHours = scadaError.HrsepwrHrs,
                    fuelConsumed = scadaError.FuelConsumed,
                    engineStartAttempts = scadaError.EngineStartsAttempts,
                    engineStartFailed = scadaError.EngineStartsFailed,
                    engineStartSuccess = scadaError.EngineStartsSuccess,
                    startupDuration = scadaError.StartupDuration,
                    throughputMMCF = scadaError.ThruputMmcf,
                    averageUnitRPM = scadaError.AvgUnitRpm,
                    oilUsageCompressor = scadaError.OilToCompCyl,
                    oilUsageManual = scadaError.OilNewCcHand,
                    errorCorrected = scadaError.ErrorCorrected
                    //blowdownCount = (int)scadaError.BlowdownCnt
                }
                ).ToList();
            }
        }
    }
}

 

 

 

 

Michael
Top achievements
Rank 1
 answered on 27 Feb 2018
1 answer
112 views

On the documentation for the Grid located here:

 

https://docs.telerik.com/aspnet-core/helpers/html-helpers/grid

I see a reference to the ProductService but don't see that as part of the sample on that page.  Where can this code be found. 

Preslav
Telerik team
 answered on 21 Feb 2018
3 answers
344 views

Hi,

I'm trying to add server filtering to the shared data source example on the demo site (Shared DataSource)

How can I add the .ServerFiltering(true) option to either the AutoComplete control or the DataSource ? 

Thanks,

Richard 

 

@(Html.Kendo().DataSource<Kendo.Mvc.Examples.Models.ProductViewModel>()
    .Name("dataSource1")
    .Ajax(dataSource => dataSource
       .Read(read => read.Action("Products_Read", "DataSource"))
       .ServerOperation(true)
     -->> .ServerFiltering(true) << --
    )
)
 
 
@(Html.Kendo().AutoComplete()
    .Name("autoComplete")
    .DataTextField("ProductName")
    .Filter(FilterType.Contains)
    .MinLength(2)
    .DataSource("dataSource1") -->> .ServerFiltering(true) <--
)
Richard
Top achievements
Rank 2
Iron
Veteran
Iron
 answered on 20 Feb 2018
1 answer
402 views

Hello,

I'm currently facing a problem with the ASP.NET Core Grid using the tag structure. My grid has the following structure:

<kendo-grid name="someGrid" deferred="true">
    <datasource page-size="20" type="DataSourceTagHelperType.Ajax" server-operation="false" server-grouping="false">
        <transport>
            <read url="some url" type="post"/>
        </transport>
        <sorts>
            <sort field="Id" direction="asc"/>
        </sorts>
    </datasource>
    <pageable button-count="5" refresh="true" page-sizes="new int[] { 5, 10, 20, 50 }"/>
    <filterable enabled="true"/>
    <scrollable enabled="true"/>
    <sortable enabled="true"/>
    <groupable enabled="false"/>
    <columns>
        <column field="Id" title="Id"/>
        <column field="Name" title="Name"/>
    </columns>
</kendo-grid>

An error occur in kendo.all.min.js (kendo.all.js) where it is executing the function _isServerGrouped(). In that particular function it tries to execute the function this.group() only that function does not exist. Did I forget to include something or is this a bug in the Grid using the taghelper? Even when server-grouping is set to false it is still trying to execute that particular function this.group() before it is going to check if the server-grouped is used or not (see image).

The back-end receives the appropriate call from the grid and is sending simple data as a JSON format back to the front-end (I've followed the example on the following page(s): https://docs.telerik.com/aspnet-core/helpers/tag-helpers/grid and https://demos.telerik.com/aspnet-core/grid/tag-helper).

Kendo-UI version: https://bower.telerik.com/bower-kendo-ui.git#~2018.1.131 (private repository)
asp.net core version: 2.0

Thank you in advance.

Angel Petrov
Telerik team
 answered on 16 Feb 2018
6 answers
801 views

Hi,

I'm using Telerik UI for in a .Net Core 2.0 application in order to display multiple rich text editors in the same page, to achieve this, I'm using multiple Kendo UI Editors.

When the page is loading, it takes over 20 seconds to load kendo.all.min.js.map and kendo.aspnetmvc.min.js.map.

The page holds 20 Kendo UI Editors, each one is .Deferred() and loaded after kendo ui scripts are loaded at the end of the page.

Furthermore, css and scripts are stored in local and not taken throught CDN Service (tried also loading from CDN Service but it has the same loading issue).

I have to run application inside IE11 and console doesn't show any script error.

Do you have any suggestion about this?

Thank you in advance!

Dimitar
Telerik team
 answered on 16 Feb 2018
2 answers
198 views

Hello,

How to use drag & drop to move a row over another in Kendo grid?

then I need the source row ID and the target row ID in the drop event where I will make an Ajax call to merge the rows into one at Service SQLServer table...

robert

Robert Madrian
Top achievements
Rank 1
Veteran
Iron
 answered on 14 Feb 2018
7 answers
611 views

Hi, I'm having a weird issue with dropdownlists and date pickers. Basically they work fine if I dont scroll may page at all but when I scroll it looks like the dropdown or datepickers child items are stuck at the original position relative to my page height. 

I attached a screenshot of what is happening.

Most of my controls are pretty basic. Is there something I'm missing in the controls thats messing with the placement of the child items?

Here is one of my drop down lists:

<div class="form-group">
    <label asp-for="timezone" class="user-label col-md-2"></label>
    <div class="col-md-4">
        @(Html.Kendo().DropDownList()
            .Name("timezone")
            .DataTextField("Text")
            .DataValueField("Value")
            .OptionLabel("Select Time Zone")
            .BindTo(new List<SelectListItem>() {
                new SelectListItem() { Text = "0 EST", Value = "0" },
                new SelectListItem() { Text = "-1 CEN", Value = "-1" },
                new SelectListItem() { Text = "-2 MTN", Value = "-2" },
                new SelectListItem() { Text = "-3 PAC", Value = "-3" },
                new SelectListItem() { Text = "-4 ALA", Value = "-4" },
                new SelectListItem() { Text = "-5 HAW", Value = "-5" },
                new SelectListItem() { Text = "+1 ATL", Value = "1" },
                new SelectListItem() { Text = "+1.5 NFI", Value = "1.5" }
            })
            .Value(Model.timezone.ToString())
        )
    </div>
</div>

 

Here is one of my date pickers:

<div class="form-group">
    <label asp-for="sign_on_expiry_date" class="user-label col-md-2"></label>
    <div class="col-md-4">
        @(Html.Kendo().DatePicker()
            .Name("sign_on_expiry_date")
            .Value(Model.sign_on_expiry_date)
        )
    </div>
</div>
neet-o
Top achievements
Rank 1
 answered on 14 Feb 2018
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?