2017-04-21 8 views
8

मेरे पास एक टेबल भुगतान है जिसमें पेमोनथ नामक एक पूर्ण-सक्षम पूर्णांक कॉलम है। मेरे पास निम्न श्रेणी और सूची है:सी # बाइंडिंग datagridviewcomboboxcolumn सूची, स्वरूपण, पसंदीदा सूची त्रुटि

public class months 
{ 
    public int payMonth { get; set; } 
    public string monthName { get; set; } 
} 

lstMonths = new List<months> { 
    ,new months() { payMonth = 1, monthName = "jan" } 
    ,new months() { payMonth = 2, monthName = "feb" } 
    ,new months() { payMonth = 3, monthName = "mar" } 
    ,new months() { payMonth = 4, monthName = "apr" } 
    ,new months() { payMonth = 5, monthName = "may" } 
    ,new months() { payMonth = 6, monthName = "jun" } 
    ,new months() { payMonth = 7, monthName = "jul" } 
    ,new months() { payMonth = 8, monthName = "aug" } 
    ,new months() { payMonth = 9, monthName = "sep" } 
    ,new months() { payMonth = 10, monthName = "oct" } 
    ,new months() { payMonth = 11, monthName = "nov" } 
    ,new months() { payMonth = 12, monthName = "dec" }}; 

cmbMonth = new DataGridViewComboBoxColumn(); 
cmbMonth.DataSource = lstMonths; 
cmbMonth.ValueMember = "payMonth"; 
cmbMonth.DisplayMember = "monthName"; 
cmbMonth.DataPropertyName = "payMonth"; 
cmbMonth.Name = "cmbPayMonth"; 
cmbMonth.HeaderText = "Month"; 
cmbMonth.FlatStyle = FlatStyle.Flat; 
cmbMonth.Width = 80; 

dgvPayments.Columns.Insert(5, cmbMonth); 

समस्या यहां आती है। जब डीजीवी में डेटा प्रदर्शित होता है, तो DataGridViewComboBoxColumn cmbMonth संख्या मान (1,2,3, ...) को महीने का नाम नहीं दिखाता है ('जनवरी', 'फरवरी', 'मार्च', ...)। और जब मैं डीजीवी पर क्लिक करता हूं तो यह त्रुटि प्रदर्शित करता है: स्वरूपण, प्रदर्शन और कुछ बार स्वरूपण, पसंदीदा आकार। जब मैं DataPropertyName प्रॉपर्टी को हटाता हूं, तो यह त्रुटि जाती है लेकिन डेटा प्रदर्शित नहीं होता है। हालांकि, तालिका में payMonth मान केवल सूची सीमा में हैं या शून्य है।

enter image description here

enter image description here

क्या गलत:

यह भुगतान तालिका है?

+0

मैं अपने कोड नमूने में संदिग्ध कुछ भी नहीं देखते हैं। क्या आपके पास 'DataGridVIew' के लिए कोई स्वरूपण ईवेंट हैंडलर है? – Fabio

+0

कोई हैंडलर, लेकिन डिफ़ॉल्ट सेल शैली –

+0

क्या भुगतान तालिका में 'payMonth' स्तंभ के प्रकार है? क्या यह महीनों की सूची में 'Int32' है? – Fabio

उत्तर

6

अपने अद्यतन

Database type of payMonth column is Number: integer

एमएस एक्सेस प्रकार Number: integer के बाद का प्रतिनिधित्व 16-बिट पूर्णांक - नेट में Int16 प्रकार।
तो, आप payMonth संपत्ति बदलना चाहिए short होने के लिए (int16)

public class months 
{ 
    public short payMonth { get; set; } 
    public string monthName { get; set; } 
} 

List of the Most Common Data Type Mappings

+0

मुझे यकीन है कि डेटाबेस तालिका में स्तंभ नाम DataPropertyName मान के समान है कर रहा हूँ। यह भुगतान मासिक है। –

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