hashtable datagridview显示空行

时间:2013-11-24 11:30:05

标签: c# datagridview hashtable

我的Datagrid填充了正确的行数,但没有数据显示。 所有行都显示空cols。

可能是什么原因?

basedon

这是我第一次使用datagridview。

    public void BindDataGridView(DataGridView dgv, Hashtable ht) {

        DataSet ds = new DataSet();
        DataTable dt = ds.Tables.Add("test");

        //now build our table
        dt.Columns.Add("col1", typeof(string));
        dt.Columns.Add("col2", typeof(Int32));

        IDictionaryEnumerator enumerator = ht.GetEnumerator();

        DataRow row = null;

        while (enumerator.MoveNext()) {
            string index = (string)enumerator.Key; // boekingsREf
            MyClass a = (MyClass)enumerator.Value;

            row = dt.NewRow();
            row["col1"] = index;
            row["col2"] = a.number;
            dt.Rows.Add(row);
        }

        //dgv.DataSource = ds.Tables[0];
        dgv.DataSource = ds.Tables[0];

    }

1 个答案:

答案 0 :(得分:0)

第一个例子

public Form1()
{
    InitializeComponent();

    Hashtable ht = new Hashtable();
    ht[1] = "One";
    ht[2] = "Two";
    ht[3] = "Three";

    BindDataGridView(dataGridView1, ht);
}

public void BindDataGridView(DataGridView dgv, Hashtable ht)
{
    DataSet ds = new DataSet();
    DataTable dt = ds.Tables.Add("test");

    //now build our table
    dt.Columns.Add("col1", typeof(int));
    dt.Columns.Add("col2", typeof(string));

    foreach (DictionaryEntry dictionaryEntry in ht)
    {
        int index = (int)dictionaryEntry.Key;
        string value = (string)dictionaryEntry.Value;

        DataRow row = dt.NewRow();
        row["col1"] = index;
        row["col2"] = value;
        dt.Rows.Add(row);
    }

    dgv.DataSource = ds.Tables[0];
}

enter image description here

第二个例子

假设您的MyClass

public class MyClass
{
    public int number { get; set; }

    static public implicit operator MyClass(int value)
    {
        return new MyClass() { number = value };
    }
}

并且哈希表是(反向键/值)

Hashtable ht = new Hashtable();
ht["One"] = 1;
ht["Two"] = 2;
ht["Three"] = 3;

并从邮政编码中更改此行

MyClass a = (int)enumerator.Value;

enter image description here