2010-10-19 2 views
0

Я работаю над проектом для своего колледжа, где мне нужно привязать данные из базы данных в combobox. Мне нужно сохранить рулон no/registration no в поле «value» combobox и имя ученика в свойстве «text» в поле со списком.Population Combobox из базы данных динамически

Мой код:

#region Fill Combo Box // Заполним Combo Box. public static void FillCombo (ComboBox _cb, строка _sSQL, строка _sTable) { OleDbDataAdapter _oledbDA = новый OleDbDataAdapter (_sSQL, _olbedbCN); DataTable _dtSource = new DataTable(); _oledbDA.Fill (_dtSource); _cb.DataSource = _dtSource; _cb.ValueMember = _dtSource.Columns [0] .ColumnName; _cb.DisplayMember = _dtSource.Columns [1] .ColumnName; }

endregion

здесь ::

_sSQL = "выберите rollno, studentname из student_data"

Другой код я попытался было:

область Fill Combo Box

//Fill Combo Box. 
    public static void FillCombo(ComboBox _cb, string _sSQL, string _sTable) 
    { 


     OleDbDataAdapter _oledbDA = new OleDbDataAdapter("select rollno, studentname from student_data", _olbedbCN); 
     DataTable _dtSource = new DataTable(); 
     _oledbDA.Fill(_dtSource); 
     _cb.DataSource=ds.Tables["StudentData"]; 
     _cb.DisplayMember="Studentname"; 
     _cb.ValueMember="rollno"; 
     _cb.SelectedIndex=0;  } 

}

endregion

но проблема, ничего не было загружено в поле со списком .... когда я запустить приложение, никакой ошибки не приходит, но ничего не загружается в выпадающем списке ...

Пожалуйста, помогите ... его SOS ...

+0

Вы должны написать cb.DataSource = _dtSource.Tables [ "student_data" ], если имя вашей таблицы имеет значение _ –

+0

Попробуйте вызвать метод DataBind() в поле со списком – jimplode

ответ

0

Я предпочитаю вручную заполнять свои выпадающие списки с данными, полученными из базы данных. Для этой цели я написал класс, MaskedValue, который я использую каждый раз.
Вот класс (преобразован из VB.NET)

using System; 
using System.Diagnostics; 
using System.ComponentModel; 

/// <summary>Represents a value masking an underlying value.</summary> 
[DebuggerDisplay("{ToString()}"), DebuggerStepThrough()] 
public class MaskedValue : IComparable<MaskedValue>, IComparer<MaskedValue> 
{ 

    private string _value; 
    public string Value { 
     get { return _value; } 
     set { _value = value; } 
    } 
    private object _underlyingValue; 
    public object UnderlyingValue { 
     get { return _underlyingValue; } 
     set { _underlyingValue = value; } 
    } 

    /// <summary>Creates a new instance of the MaskedValue class.</summary> 
    public MaskedValue() 
    { 
     Value = ""; 
     UnderlyingValue = null; 
    } 

    /// <summary>Creates a new instance of the MaskedValue class.</summary> 
    /// <param name="value">Value to be assigned to the MaskedValue.</param> 
    public MaskedValue(string value) 
    { 
     this.Value = value; 
    } 

    /// <summary>Creates a new instance of the MaskedValue class.</summary> 
    /// <param name="value">Value to be assigned to the MaskedValue.</param> 
    /// <param name="underlyingValue">Underlying value of the MaskedValue.</param> 
    public MaskedValue(string value, object underlyingValue) 
    { 
     this.Value = value; 
     this.UnderlyingValue = underlyingValue; 
    } 

    /// <summary>Gets a value that represents this MaskedValue.</summary> 
    public override string ToString() 
    { 
     return Value; 
    } 

    /// <summary>Compares two instances of MaskedValue.</summary> 
    /// <param name="x" >First MaskedValue to be compared.</param> 
    /// <param name="y">Second MaskedValue to be compared.</param> 
    /// <returns> 
    /// A 32-bit signed integer indicating the lexical relationship between the two comparands. 
    /// </returns> 
    [EditorBrowsable(EditorBrowsableState.Advanced)] 
    public int Compare(MaskedValue x, MaskedValue y) 
    { 
     return x.CompareTo(y); 
    } 

    /// <summary>Compares this MaskedValue to the other.</summary> 
    /// <param name="other">MaskedValue to compare this MaskedValue with.</param> 
    /// <returns> 
    /// A 32-bit signed integer indicating the lexical relationship between the two comparands. 
    /// </returns> 
    [EditorBrowsable(EditorBrowsableState.Advanced)] 
    public int CompareTo(MaskedValue other) 
    { 
     return this.Value.CompareTo(other.Value); 
    } 
} 

Чтобы заполнить поле со списком, я пишу код, как показано ниже

foreach (DataRow dr in _DataTable.Rows) 
{ 
    _ComboBox.Items.Add(New MaskedValue(dr("Name").ToString(), dr("ID"))); 
} 
Смежные вопросы