views:

32

answers:

1

Hi there, I am working on a project for my college where I need to bind data from database into the combobox. I need to store the roll no / enrollment no in the "value" field of combobox and name of the student in the "text" property of the combobox.

My code is :

#region Fill Combo Box //Fill Combo Box. public static void FillCombo(ComboBox _cb, string _sSQL, string _sTable) { OleDbDataAdapter _oledbDA = new 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

here::

_sSQL = "select rollno, studentname from student_data"

Other code i tried was :

region 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

but the problem is, nothing is been loaded in the combo box.... when i run the application, no error comes, but nothing is loaded in the combobox...

Please help... its SOS...

A: 

I prefer to manually populate my comboboxes with data retrieved from the database. For this purpose, I wrote a class, MaskedValue which I use every time.
Here's the class (converted from 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);
    }
}

To populate a combo box, I write code like below

foreach (DataRow dr in _DataTable.Rows)
{
    _ComboBox.Items.Add(New MaskedValue(dr("Name").ToString(), dr("ID")));
}
Alex Essilfie