5

मैं एक केंडो ग्रिड इसलिए तरह की स्थापना की है:संपादक dropdownlist मूल्य के साथ अद्यतन केंडो ग्रिड

@(Html.Kendo().Grid<ParticipatingDentalEE>() 
.Name("DentalEE") 
.Columns(columns => 
{ 
    columns.Bound(p => p.State).Title("State").Width(150).EditorTemplateName("State"); 
    columns.Bound(p => p.Count).Title("Count").Width(150); 
    columns.Command(c => { c.Edit(); c.Destroy(); }); 
}) 
.DataSource(dataSource => dataSource 
    .Ajax()   
    .Model(m => { 
     m.Id(p => p.State); 
     m.Field(p => p.State).Editable(true); 
     m.Field(p => p.Count).Editable(true).DefaultValue(""); 
    }) 
    .Create(update => update.Action("EditingInline_Create", "Dental")) 
    .Read(read => read.Action("EditingInline_Read", "Dental")) 
    .Update(update => update.Action("EditingInline_Update", "Dental")) 
    .Destroy(update => update.Action("EditingInline_Destroy", "Dental")) 
) 
//.Scrollable() 
//.Sortable() 
.Editable(e => e.Mode(GridEditMode.InLine)) 

)

"स्थिति" कॉलम एक ड्रॉपडाउन टेम्पलेट है कि इस तरह दिखता है के होते हैं:

@(Html.Kendo().DropDownList() 
    .Name("States") // Name of the widget should be the same as the name of the property 
    .DataValueField("CODE") // The value of the dropdown is taken from the EmployeeID property 
    .DataTextField("NAME") // The text of the items is taken from the EmployeeName property 
    .BindTo((System.Collections.IEnumerable)ViewData["States"]) // A list of all employees which is populated in the controller 
) 

जब मैं कोई आइटम संपादित या निर्माण करता हूं तो मेरा ड्रॉपडाउन ठीक से दिखाई देता है, लेकिन जब मैं आइटम को सहेजता हूं तो ड्रॉपडाउन मान ग्रिड में नहीं रहता है। क्या ऐसा करने के लिए मुझे कुछ और स्थापित करने की आवश्यकता है?

उत्तर

4

के रूप में आप अपने खुद के टिप्पणी में कहते हैं,

.Name("States") // Name of the widget should be the same as the name of the property 

जो कहने के लिए है, यह स्तंभ का नाम से मेल खाना चाहिए, और स्तंभ नाम "राज्य" नहीं "अमेरिका" है।

+0

हां, आप उस गलती के बारे में सही हैं - हालांकि मुझे यह भी पता चला कि सहेजते समय मुझे सही तरीके से प्रदर्शित करने के लिए टेक्स्ट/वैल्यू की आवश्यकता होती है। – Goose

+0

मेरे पास यह कार्यक्षमता काम कर रही है, लेकिन जब मैं संपादक मोड में प्रवेश करता हूं, तो ड्रॉपडाउन सूची व्यूबैग संग्रह में पहले आइटम पर डिफ़ॉल्ट होती है, न कि वास्तविक मान, इसलिए यदि कोई उपयोगकर्ता मैन्युअल रूप से ड्रॉपडाउन को नहीं बदलता है तो एक आकस्मिक अपडेट हो सकता है पहले से? क्या आप जानते हैं कि मैं इस परिदृश्य को कैसे संभाल सकता हूं, या यहां तक ​​कि ViewBag के बजाय ड्रॉपडाउन पर DataSource.read का उपयोग भी कर सकता हूं – CSharper

0

मुझे यकीन है कि अगर यह आपकी समस्या का समाधान होगा नहीं कर रहा हूँ, लेकिन मेरे ग्रिड के लिए संपादक टेम्पलेट्स सही ढंग से काम नहीं किया जब तक मैं मॉडल, और ध्यान में रखते हुए EditorTemplateName में UIHint डेकोरेटर निर्धारित किया था।

उदा।

public class ParticipatingDentalEE { 
    ... 

    [UIHint("State")] // this should be the name of your EditorTemplate 
    public State State { get; set; } 

} 

मैं अनुमान है कि UIHint, 'दृश्य' मोड में ग्रिड के लिए प्रयोग किया जाता है, जबकि EditorTemplateName 'संपादन' मोड में रहते हुए प्रयोग किया जाता है, और दोनों दोनों एक साथ लिंक करना आवश्यक है।

3

जाहिर है यह एक पुराना धागा है, हालांकि फिक्स ड्रॉपडाउनलिस्ट फॉर विधि (ड्रॉपडाउनलिस्ट के विपरीत) का उपयोग करना है और नाम निर्दिष्ट नहीं करना है। मुझे संदेह है कि केंडो मॉडल में वापस संपादित मूल्य को लागू करने के लिए कुछ आंतरिक नाम मिलान करता है।

@model int // ...or whatever type works for your model 

@(Html.Kendo().DropDownListFor(i => i) 
    .DataValueField("CODE") 
    .DataTextField("NAME") 
    .BindTo((System.Collections.IEnumerable)ViewData["States"])) 
+0

'नाम' को हटाने से यह मेरे लिए तय हो गया। –

संबंधित मुद्दे