2011-02-27 10 views
9

से डेटा बाध्य करने से पहले combobox में एक आइटम जोड़ें मेरे पास एक विंडोज फॉर्म फॉर्म में एक combobox था जो डेटाबेस से डेटा पुनर्प्राप्त करता है। मैंने यह अच्छा किया, लेकिन मैं पहले आइटम < जोड़ना चाहता हूं- कृपया डेटाबेस से डेटा से पहले श्रेणी-> चुनें। मैं उसे कैसे कर सकता हूँ? और मैं इसे कहां रख सकता हूं?डेटाबेस

public Category() 
{ 
    InitializeComponent(); 
    CategoryParent(); 

} 

private void CategoryParent() 
{ 
    using (SqlConnection Con = GetConnection()) 
    { 
     SqlDataAdapter da = new SqlDataAdapter("Select Category.Category, Category.Id from Category", Con); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     CBParent.DataSource = dt; 
     CBParent.DisplayMember = "Category"; 
     CBParent.ValueMember = "Id"; 
    } 
} 

उत्तर

11

आप या तो इस तरह बता गया की Text संपत्ति के लिए डिफ़ॉल्ट पाठ जोड़ सकते हैं (पसंदीदा):

CBParent.Text = "<-Please select Category->"; 

या, आप datatable सीधे करने के लिए मूल्य जोड़ सकते हैं:

da.Fill(dt); 
DataRow row = dt.NewRow(); 
row["Category"] = "<-Please select Category->"; 
dt.Rows.InsertAt(row, 0); 
CBParent.DataSource = dt; 
0

दो त्वरित दृष्टिकोण हैं जो आप कोशिश कर सकते हैं (मेरे पास अभी एक या तो परीक्षण करने के लिए एक कंपाइलर आसान नहीं है):

  1. आइटम को बाध्य करने से पहले DataTable पर आइटम जोड़ें।
  2. आपको CBParent.Text को "< पर सेट करने में सक्षम होना चाहिए - डेटा को बाध्य करने के बाद कृपया श्रेणी -> चुनें। इसे आइटम के साथ गड़बड़ किए बिना प्रदर्शित टेक्स्ट सेट करना चाहिए।
+0

प्रिय डेविड, आप किसी आइटम आप डेटा के लिए बाध्य करने के बाद नहीं डाल सकते। कंपाइलर यह त्रुटि देता है: "डेटासोर्स प्रॉपर्टी सेट होने पर आइटम संग्रह को संशोधित नहीं किया जा सकता है।" अगली बार कृपया एक प्रश्न का उत्तर देने से पहले एक आसान कंपाइलर होने पर विचार करें कि लोग पढ़ने पर समय व्यतीत करेंगे। –

2
public class ComboboxItem 
{ 
    public object ID { get; set; } 
    public string Name { get; set; } 

} 

public static List<ComboboxItem> getReligions() 
{ 
    try 
    { 
     List<ComboboxItem> Ilist = new List<ComboboxItem>(); 
     var query = from c in service.Religions.ToList() select c; 
     foreach (var q in query) 
     { 
      ComboboxItem item = new ComboboxItem(); 
      item.ID = q.Id; 
      item.Name = q.Name; 
      Ilist.Add(item); 
     } 
     ComboboxItem itemSelect = new ComboboxItem(); 
     itemSelect.ID = "0"; 
     itemSelect.Name = "<Select Religion>"; 
     Ilist.Insert(0, itemSelect); 
     return Ilist; 
    } 
    catch (Exception ex) 
    { 
     return null; 
    }  
} 

ddlcombobox.datasourec = getReligions(); 
+0

अच्छा। अब, अगर मैं अज्ञात प्रकार का उपयोग करता हूं जैसे कि: ** चुनें (x => new {value = x.PROJECTGUID, display = x.NAME + "-" + x.TFSPATH} **। नमूना: 'var listaProyectosDeSolucion = GestorDespliegues.SelectProyectos() डिस्टिंक (तुलनात्मक) । जहां (x => x.TFSPATHSOLUTION == TFSPATHSOLUTION) । चयन करें (x => नया {मान = x.PROJECTGUID, प्रदर्शन = x.NAME + "-" + x.TFSPATH})। ToList(); cbProyectos.Load (listaProyectosDeSolucion, "Value", "प्रदर्शन"); ' – Kiquenet

0

आप "Please select" जोड़ने आप डेटा के लिए बाध्य करने के बाद करना चाहिए।

var query = from name in context.Version 
       join service in context.Service 
       on name.ServiceId equals service.Id 
       where name.VersionId == Id 
       select new 
       { 
        service.Name 
       }; 

ddlService.DataSource = query.ToList(); 
ddlService.DataTextField = "Name"; 
ddlService.DataBind(); 
ddlService.Items.Insert(0, new ListItem("<--Please select-->")); 
-1
void GetProvince() 
{ 
    SqlConnection con = new SqlConnection(dl.cs); 
    try 
    { 
     SqlDataAdapter da = new SqlDataAdapter("SELECT ProvinceID, ProvinceName FROM Province", con); 
     DataTable dt = new DataTable();    
     int i = da.Fill(dt); 

     if (i > 0) 
     {   
      DataRow row = dt.NewRow(); 
      row["ProvinceName"] = "<-Selecione a Provincia->"; 
      dt.Rows.InsertAt(row, 0); 

      cbbProvince.DataSource = dt; 
      cbbProvince.DisplayMember = "ProvinceName"; 
      cbbProvince.ValueMember = "ProvinceID"; 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
}