"> "> " />

केंडो एमवीसी डेटपीकर मूल्य निर्धारित नहीं कर रहा है

I'm following the example here: http://demos.kendoui.com/web/datepicker/rangeselection.html

यहां बताया गया है कि मैं अपने फ़ील्ड को एक संपादक के अंदर कैसे परिभाषित कर रहा हूं टेम्पलेट:

<div class="editor-label">
    @Html.RequiredLabelFor(model => model.StartDate)
</div>
<div class="editor-field">
    @Html.Kendo().DatePickerFor(model => model.StartDate).Value(DateTime.Now).Max(DateTime.Now.AddDays(2)).Events(e => e.Change("startChange"))
    @Html.ValidationMessageFor(model => model.StartDate)
</div>

<div class="editor-label">
    @Html.RequiredLabelFor(model => model.EndDate)
</div>
<div class="editor-field">
    @Html.Kendo().DatePickerFor(model => model.EndDate).Value(DateTime.Now.AddDays(2)).Min(DateTime.Now).Events(e => e.Change("endChange"))
    @Html.ValidationMessageFor(model => model.EndDate)
</div>

मैं एक KendoUI ग्रिड के भीतर EditorTemplate का उपयोग कर रहा हूं जिसमें एक पॉप बटन है जो पॉपअप मोड में है। समस्या यह है कि जब मैं पॉपअप को देखता हूं, तो एंडडेट पिकर के लिए प्रारंभिक डिफ़ॉल्ट मान हमेशा चालू दिनांक पर सेट होता है, भले ही मैं पृष्ठ स्रोत के अंदर देखता हूं, डेटपिकर के लिए "मान" विशेषता मेरी भविष्य की तारीख पर सेट की जाती है :

value=\"2013-12-06\"

डेटपिकर में डिफ़ॉल्ट मान क्यों प्रदर्शित होता है जब तक कि मैं उस मूल्य के बावजूद वर्तमान तारीख को पास कर रहा हूं?

1
ठीक है, मैं वर्तमान तिथि के दो दिन बाद समाप्ति तिथि निर्धारित कर रहा हूं, हालांकि जब पॉपअप प्रकट होता है, तो वर्तमान दिनांक डेटपिकर में चयनित मान है। ऐसा लगता है कि यह पारित मूल्य को अनदेखा कर रहा है।
जोड़ा लेखक Pete, स्रोत
मुझे समझ में नहीं आता आप वर्तमान तिथि के दो दिन बाद समाप्ति तिथि निर्धारित कर रहे हैं। यह वह तारीख होनी चाहिए जो आप देखते हैं, है ना?
जोड़ा लेखक ataravati, स्रोत
ठीक है, आपका मतलब है कि अंतिम तिथि वर्तमान तारीख के दो दिन बाद की तारीख है?
जोड़ा लेखक ataravati, स्रोत

2 उत्तर

पता लगा लिया। यह पता चला है कि केंडो नए अंतर्निहित मॉडल को अपने आप शुरू कर देगा, और यह डेटपिकर में किसी भी डिफ़ॉल्ट मान सेट को ओवरराइड करेगा। चूंकि मेरे फॉर्म में दिनांक फ़ील्ड गैर-शून्य नहीं थे, इसलिए यह उन्हें डिफ़ॉल्ट तिथि से डिफ़ॉल्ट रूप से प्रारंभ किया गया था। नए बनाए गए मॉडल के लिए एक वैकल्पिक डिफ़ॉल्ट मान केंडो को बताने के लिए, मुझे ग्रिड में डेटासोर्स प्रॉपर्टी को संशोधित करना था (जो पॉपअप फॉर्म को जन्म देता है)।

.DataSource(dataSource => dataSource
                .Ajax()
                .Sort(sort => sort.Add(s => s.RunDate).Descending())
                .Model(model =>
                     {
                       model.Id(c => c.Id);
                       //These next 3 lines tell kendo the default values to use 
                       //when creating a new model. This fixed my problem.
                       model.Field(c => c.EndDate).DefaultValue(DateTime.Today.AddDays(7));
                       model.Field(c => c.StartDate).DefaultValue(DateTime.Today);
                       model.Field(c => c.RunDate).DefaultValue(DateTime.Today);
                     })
                 .Events(events => events.Error("error"))
                 .Create(create => create.Action("Create", "MyController"))
                 .Read(read => read.Action("Read", "MyController"))
                 .Destroy(update => update.Action("Destroy", "MyController"))
      )
3
जोड़ा
अच्छा उदाहरण :)
जोड़ा लेखक Amit, स्रोत

मैं आपके नियंत्रक/एक्शन विधि में डिफ़ॉल्ट सेट करूंगा, इसी तरह:

public ActionResult()
{
    var model = new MyViewModel
    {
        EndDate = DateTime.Now.AddDays(2)
    }

    return View(model);
}

and then get rid of the .Value(DateTime.Now.AddDays(2)) on the DatePickerFor

0
जोड़ा