Asp.net mvc 4 mVC中的DHTMLX调度器

Asp.net mvc 4 mVC中的DHTMLX调度器,asp.net-mvc-4,Asp.net Mvc 4,我正在MVC应用程序中使用DHTMLX调度程序。在我的调度程序中,当我们拖放计时时,将显示一个弹出窗口,默认情况下,该窗口在scheduler.js文件中工作。我的问题是,在拖动显示自定义弹出窗口所需的时间时。可以使用调度程序吗? 谁能帮帮我吗 调度程序的代码是 公共操作结果日历视图(int?id、int?CustomerUserid) { //id = (int)Session["BUId"]; if (CustomerUserid == (int)Sessio

我正在MVC应用程序中使用DHTMLX调度程序。在我的调度程序中,当我们拖放计时时,将显示一个弹出窗口,默认情况下,该窗口在scheduler.js文件中工作。我的问题是,在拖动显示自定义弹出窗口所需的时间时。可以使用调度程序吗? 谁能帮帮我吗

调度程序的代码是 公共操作结果日历视图(int?id、int?CustomerUserid) {

        //id = (int)Session["BUId"];
        if (CustomerUserid == (int)Session["UserID"] || (CustomerUserid == (int)Session["UserID"] && id == (int)Session["BusinessId"]))
        {
            var scheduler = new DHXScheduler(this);



                string val = System.Configuration.ConfigurationManager.AppSettings["UserTypeId"];
                int code = Convert.ToInt32(val);
                //var cuid =  (int)Session["UserID"];
                //    List<tblUser> user  = new List<tblUser>();
                //    var user1 = (from s in user
                //                 where s.UserTypeId == 3 && s.UserID == cuid
                //                 select new Appt
                //                 {
                //                     AddCustomer = s.DependentCustomer.ToString()

                //                 }).ToList();

                var cal = (from s
                            in db.tblUsers
                           where s.UserTypeId == code && s.UserID == id
                           select new Appt
                           {

                               BusinessName = s.tblBusinessCategory.BusinessName
                               // StartTime = s.WorkingHour.StartTime,

                           }).FirstOrDefault();
                var sa = (from a
                             in db.WorkHours
                          where a.BusinessUserId == id
                          select new Appt
                          {

                              StartTime = a.StartTime,
                              EndTime = a.EndTime
                          }).FirstOrDefault();
                Session["StartTime"] = sa.StartTime.Hour;
                Session["EndTime"] = sa.EndTime.Hour;
                Session["BUName"] = cal.BusinessName.ToString();


                // var scheduler = new DHXScheduler(this);//{ InitialDate = new DateTime(2015, 1, 30) };

                scheduler.Skin = DHXScheduler.Skins.Flat;
                scheduler.Data.Loader.PreventCache();
                scheduler.EnableDynamicLoading(SchedulerDataLoader.DynamicalLoadingMode.Week);
                scheduler.Extensions.Add(SchedulerExtensions.Extension.Recurring);
                //scheduler.Extensions.Add(SchedulerExtensions.Extension.ActiveLinks);

                //scheduler.Extensions.Add(SchedulerExtensions.Extension.Collision);

                scheduler.Extensions.Add(SchedulerExtensions.Extension.Limit);
                scheduler.Config.limit_start = new DateTime(2015, 8, 25);
                scheduler.Config.limit_end = new DateTime(2015, 9, 25);


                scheduler.LoadData = true;
                scheduler.EnableDataprocessor = true;
                scheduler.Config.show_loading = true;
                //   scheduler.Config.buttons_left = ["dhx_save_btn","dhx_cancel_btn","locate_button"];
                //var button = new LightboxButtonList();
                //scheduler.Lightbox.Add();

                int days = System.DateTime.Now.Day - 1;
                int months = System.DateTime.Now.Month;
                int years = System.DateTime.Now.Year;
                int ihour = System.DateTime.Now.Hour;
                int iminute = System.DateTime.Now.Minute;
                int isecond = System.DateTime.Now.Second;

                scheduler.TimeSpans.Add(new DHXBlockTime()
                {
                    StartDate = new DateTime(2014, 2, 10),
                    EndDate = new DateTime(years, months, days + 1, ihour, iminute, isecond),

                });
                Session["BUId"] = id;
                var parameter = new SqlParameter[1];
                parameter[0] = new SqlParameter { ParameterName = "UserId", Value = id };
                List<Appt> cm = new List<Appt>();
                using (SYTEntities context = new SYTEntities())
                {
                    cm = context.Database.SqlQuery<Appt>("exec spHoliday @UserId", parameter).ToList();

                }
                int iyear = 2015;
                int imonth = 8;
                int iday = 09;
                //int ihour = 10;
                int imin = 05;
                int isec = 00;


                foreach (var cp in cm)
                {
                    iyear = cp.HolidayDate.Year;
                    imonth = cp.HolidayDate.Month;
                    iday = cp.HolidayDate.Day;

                    scheduler.TimeSpans.Add(new DHXMarkTime()
                    {

                        StartDate = new DateTime(iyear, imonth, iday),       //new DateTime(2015, 8, 06), //hl.HolidayDate ?? default(DateTime),    
                        EndDate = new DateTime(iyear, imonth, iday + 1),
                        //  Day = DayOfWeek.Friday,

                        CssClass = "red_section",
                        HTML = "hos",
                        SpanType = DHXTimeSpan.Type.BlockEvents
                    });
                }
                var parameters = new SqlParameter[1];
                parameters[0] = new SqlParameter { ParameterName = "BusinessUserId", Value = id };
                List<Appt> wt = new List<Appt>();
                using (SYTEntities context = new SYTEntities())
                {
                    wt = context.Database.SqlQuery<Appt>("exec spGetWaitingList @BusinessUserId", parameters).ToList();

                }
                int ihr;
                int imts;
                int idayd;
                int iyr;
                int imnth;
                int ihrs;
                foreach (var cs in wt)
                {
                    iyr = cs.EndTime.Year;// System.DateTime.Now.Year;
                    imnth = cs.EndTime.Month;// System.DateTime.Now.Month;
                    idayd = cs.EndTime.Day;// System.DateTime.Now.Day;
                    ihr = cs.EndTime.Hour;     //.Hours;    //.Hour;
                    imts = cs.EndTime.Minute;        //.Minutes;        //.Minute;
                    isec = cs.EndTime.Second; //.Seconds;
                    ihrs = cs.EndTime.Hour - cs.StartTime.Hour;

                    scheduler.TimeSpans.Add(new DHXMarkTime()
                    {

                        StartDate = new DateTime(iyr, imnth, idayd, ihr, imts, isec),       //new DateTime(2015, 8, 06), //hl.HolidayDate ?? default(DateTime),    
                        EndDate = new DateTime(iyr, imnth, idayd, ihr, imts, isec),
                        //  Day = DayOfWeek.Friday,

                        CssClass = "green_section",
                        HTML = "",
                        SpanType = DHXTimeSpan.Type.BlockEvents
                    });

                }

                //for (int i = 0; i < 4; i++)
                //{
                //    scheduler.TimeSpans.Add(new DHXMarkTime()
                //    {


                //        StartDate = new DateTime(iyear, imonth,iday,ihour, imin, isec),       //new DateTime(2015, 8, 06), //hl.HolidayDate ?? default(DateTime),    
                //        EndDate = new DateTime(iyear, imonth, iday,ihour, imin, isec),

                //        CssClass = "red_section",
                //        SpanType = DHXTimeSpan.Type.BlockEvents
                //    });
                //}
                scheduler.BeforeInit.Add("schedulerClient.init()");
                //var check = new LightboxCheckbox("highlighting", "Important") { MapTo = "color", CheckedValue = "#FE7510" };
                //scheduler.Lightbox.Add(check);

                return View(scheduler);

        }


        return View();

    }
//id=(int)会话[“BUId”];
if(CustomerUserid==(int)会话[“UserID”]| |(CustomerUserid==(int)会话[“UserID”]&&id==(int)会话[“BusinessId”])
{
var调度程序=新的DHXScheduler(此);
字符串val=System.Configuration.ConfigurationManager.AppSettings[“UserTypeId”];
int code=Convert.ToInt32(val);
//var cuid=(int)会话[“UserID”];
//列表用户=新列表();
//var user1=(来自用户中的s)
//其中s.UserTypeId==3&&s.UserID==cuid
//选择新应用程序
//                 {
//AddCustomer=s.DependentCustomer.ToString()
//}).ToList();
var cal=(来自s)
在db.tblUsers中
其中s.UserTypeId==code&&s.UserID==id
选择新应用程序
{
BusinessName=s.tblBusinessCategory.BusinessName
//StartTime=s.WorkingHour.StartTime,
}).FirstOrDefault();
var sa=(来自a)
以分贝计算的工作时间
其中a.BusinessUserId==id
选择新应用程序
{
开始时间,
EndTime=a.EndTime
}).FirstOrDefault();
会话[“开始时间”]=sa.StartTime.Hour;
会话[“EndTime”]=sa.EndTime.Hour;
会话[“BUName”]=cal.BusinessName.ToString();
//var scheduler=newdhxscheduler(this);//{InitialDate=new DateTime(2015,1,30)};
scheduler.Skin=DHXScheduler.Skins.Flat;
scheduler.Data.Loader.PreventCache();
scheduler.EnableDynamicLoading(SchedulerDataLoader.DynamicLoadingMode.Week);
scheduler.Extensions.Add(schedulerextension.Extension.recurtive);
//scheduler.Extensions.Add(schedulerextension.Extension.ActiveLinks);
//scheduler.Extensions.Add(schedulerextension.Extension.Collision);
scheduler.Extensions.Add(schedulerextension.Extension.Limit);
scheduler.Config.limit_start=新日期时间(2015,8,25);
scheduler.Config.limit_end=新日期时间(2015,9,25);
scheduler.LoadData=true;
scheduler.EnableDataprocessor=true;
scheduler.Config.show_load=true;
//scheduler.Config.buttons_left=[“dhx_save_btn”、“dhx_cancel_btn”、“locate_button”];
//var button=新的LightboxButtonList();
//scheduler.Lightbox.Add();
int days=System.DateTime.Now.Day-1;
int months=System.DateTime.Now.Month;
int years=System.DateTime.Now.Year;
int ihour=System.DateTime.Now.Hour;
int iminute=System.DateTime.Now.Minute;
int isecond=System.DateTime.Now.Second;
scheduler.TimeSpans.Add(新的DHXBlockTime()
{
StartDate=新的日期时间(2014年2月10日),
EndDate=新日期时间(年、月、日+1、小时、分钟、秒),
});
会话[“BUId”]=id;
var参数=新的SqlParameter[1];
参数[0]=newsqlparameter{ParameterName=“UserId”,Value=id};

列表

您的意思是在任务移动/调整大小期间需要显示某种弹出窗口来显示其他信息吗? 如果是这样,您可以将模板用于任务内容-如果当前任务正在被拖动或调整大小,模板应返回带有自定义内容的绝对定位弹出窗口

例如。 JS:

结果:

不过,使用这种方法,您需要比我在本示例中更仔细地管理工具提示位置。由于popup嵌套在事件的DOM元素中,它将受到调度程序容器的限制。例如,当事件位于最左边的列中时,您需要将popup定位在右边,否则它将被剪切

下面是相关的API方法

scheduler.attachEvent("onSchedulerReady", function () {
    var headerTemplate = scheduler.templates.event_header;

    scheduler.templates.event_header = function (start, end, event) {
        var content = headerTemplate(start, end, event);

        if (scheduler.getState().drag_id == event.id) {
            var dragPopup = "<div class='drag-popup'>" + headerTemplate(start, end, event) + "</div>";

            content += dragPopup;
        }

        return content;

    };
});
.drag-popup{
    position: absolute;
    right:0;
    top: 0;
    margin-right: 120px;
    padding: 10px;

    width: 100px;
    background-color: inherit;
    color: inherit;
    z-index: 5;
}