Заполнение Combobox из базы данных динамически - PullRequest
0 голосов
/ 19 октября 2010

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

Мой код:

#Поле Fill 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, имя студента из student_data"

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

область поля со списком заполнения

    //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 ...

1 Ответ

0 голосов
/ 19 октября 2010

Я предпочитаю вручную заполнять свои комбинированные списки данными, полученными из базы данных.Для этого я написал класс 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")));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...