来自数据表的数据仅使用C#Winforms填充ListView中的一列

时间:2014-02-19 16:54:14

标签: winforms listview datatable

我有一个数据表,我从Access数据库中填充了表名,“代码”和3列,“CodeNum”,“TableName”和“Desc”。在我的Winforms C#应用程序中,我想用这个数据表填充ListView并让它以相同的格式显示列(带列名)。我尝试了很多代码组合,但无法使其工作。下面的代码显示了第1列中的CodeNum和TableName数据,而不是DESC数据,也没有显示列名(CodeNum)。任何帮助非常感谢。真的不需要, “DataRowState.Deleted”if if语句,但在注释掉时工作方式相同。

Listview应该有3列,每列中都列有数据。

谢谢。

        //Get data from Access database and populate datatable "dt"
        OleDbConnection Conn = new OleDbConnection();
        string conn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=M:\gendoc\Codes.mdb;Persist Security Info=False;";
        ListViewItem LItem1 = new ListViewItem();
        Conn.ConnectionString = conn;
        Conn.Open();

        DataTable dt = new DataTable();
        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        OleDbDataAdapter da = new OleDbDataAdapter("select * from Codes order by CodeNum", Conn);
        da.Fill(dt);
        Conn.Close();


        // Clear the ListView control
        listView1.Items.Clear();
        int ColCount = dt.Columns.Count;
        //Add columns
        for (int k = 0; k < ColCount; k++)
        {
            listView1.Columns.Add(dt.Columns[k].ColumnName);
        }
        // Display items in the ListView control
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            DataRow drow = dt.Rows[i];

            // Only row that have not been deleted
            if (drow.RowState != DataRowState.Deleted)
            {
                // Define the list items
                ListViewItem lvi = new ListViewItem(drow[0].ToString());
                for (int j = 1; j < ColCount; j++)
                {
                    string g = drow[j].ToString();
                    lvi.SubItems.Add(drow[j].ToString());
                }
                // Add the list items to the ListView
                listView1.Items.Add(lvi);
            }
        }

1 个答案:

答案 0 :(得分:0)

右键单击Listview,属性,查看,更改详细信息选项