【问题标题】:Kendo grid date from and date until when inline editing内联编辑时的 Kendo 网格日期和日期
【发布时间】:2020-10-12 00:40:15
【问题描述】:

我有这个剑道网格。对于dateFromdateUntil 列,当我从今天开始编辑过去的日期时,我可以看到灰色值的日期吗?目前,当我编辑过去的日期时,该字段将变为空。

DEMO IN DOJO 代码太长,这里无法显示。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    希望Updated Dojo 这会有所帮助。

    我假设您只希望控件的min date 设置在current day 之前,前提是已经存在一个值并且新记录不应该能够选择之前的日期current date

    我所做的只是在kendoDateFrom 函数中添加一个条件,以检查该字段中的日期是否在presentDate 变量之前,如果是,则将控件的min 值设置为该日期为你。我还添加了对新条目的检查,并检查该值是否未定义,以便为您将其设置为当前日期。

    if(options.model[options.field] != undefined && 
     kendo.parseDate(options.model[options.field], "MM/dd/yyyy") < presentDate){
        presentDate = options.model[options.field]; 
      }
      else 
      {
        presentDate = new Date(); 
      }
    

    如果您的要求不同,请在问题中提供更多信息以帮助满足您的要求。

    编辑 因此,根据您更新的要求,我已将道场更新为我认为您想要的。

    Modified Dojo

    我已经调整了道场来为你解决几个问题。

    1. 添加了一个新的currentMinDate 变量,它将用作我们的最小日期检查。
    2. 更改了最小日期检查以解决随机的blanking 日期。
    3. 当某个日期在过去时enable 该日期但禁用该日期和当前日期之间的所有日期(假设这是您希望在需要更改日期时发生的情况。
    4. 添加了parseFormats 设置以确保它可以解析您提供的日期格式。
    5. 扩展了您的数据源,以便更新按钮将更改保存到本地数组。

    禁用日期功能做了几件事:

    1. 检查传入的日期是空还是日期
    2. 检查传入的日期是否小于当前日期
    3. 检查传入的日期是否不等于当前最小日期

    如果它将所有这些解析为 true,则它会禁用日期,因此无法选择它,重要的是它确保它不会禁用过去当前选择的日期,因此它将选择它。如果该日期也被禁用,那么它将能够选择禁用日期,因为它被视为无效。

    disableDates:function(date){
          console.log('disabling dates function, current passed Date::::', date); 
          console.log(date == currentMinDate, date, currentMinDate); 
          if(date && date.getDate() < presentDate.getDate() && 
             date.getDate() != currentMinDate.getDate())
          {
            console.log(date,currentMinDate,  'disabled'); 
            return true;
          }
          else 
          {
            console.log(date,currentMinDate,  'not disabled'); 
            return false; 
          }
          
        },
    

    我已将我的评论声明留在其中,以便您查看发生了什么。

    希望现在对您有所帮助。

    【讨论】:

    • 感谢您的时间。它略微偏离。让我再试着解释一下。基本上在编辑模式下,我无法从presentDate 编辑past date,如果日期已经过了今天的日期,只能在禁用模式下显示日期,但我仍然可以从今天开始更新日期。另外,我在您的演示中发现了一些奇怪的东西,例如,如果我一次又一次地单击editcancel 按钮,我注意到有时日期显示为空值(它只发生在past date)。
    • 那么,如果您希望能够编辑过去的日期,为什么要将控件的最小日期设置为当前日期?
    • 因为它可以在添加新记录时使用。基于我的原始帖子和演示。例如,当我编辑Data A 时,我可以看到 dateFrom 和 dateUntil。由于日期控制,目前它显示为空白。
    • 也许我应该改写我的问题。在控件上设置minDate 的目的是什么。为什么要禁用某个日期之前的日期,无论是过去的(已输入的日期)还是当前日期的新记录?新记录第一次添加时可以有past date吗?
    • (1)。我想在添加新记录期间使用minDate 设置。这意味着它只能向前添加presentDate。 (2)。我无法编辑从presentDate 过去的要求日期。但它可以在禁用模式下显示。另外,选择presentDate 之后仍然允许它进行任何更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多