添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
骑白马的小蝌蚪  ·  QComboBox ...·  2 周前    · 
沉着的投影仪  ·  Search - USAJOBS·  3 月前    · 
坚强的遥控器  ·  Resolving TypeError: ...·  7 月前    · 
气势凌人的电池  ·  Content-disposition ...·  9 月前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

Guys i'm a beginner in implementing ListView in c#. I'm having a problem with these piece of code in c#.net. And I can't figure out whats happening in the control shown by the output. It seems i forgot something to give a value in properties of ListView Control.

2nd column values must appear on the first column.

This is my code:

using System;
using System.Collections.Generic;   
using System.ComponentModel;
using System.Data;                  
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;        
using System.Data.OleDb;            
namespace Database2
    public partial class Form1 : Form
        OleDbConnection con;
        OleDbDataAdapter adapter;
        DataTable table;
        string conString = "Provider = Microsoft.Jet.OLEDB.4.0.; Data Source=DatabaseTest.mdb";
        string sqlQuery = "SELECT * FROM Person";
        public Form1() {
            InitializeComponent();
        private void Form1_Load(object sender, EventArgs e){
            con = new OleDbConnection(conString);
            adapter = new OleDbDataAdapter(sqlQuery,conString);
            table = new DataTable();
            InitializeList();
            adapter.Fill(table);
            for (int i = 0; i < table.Columns.Count; i++)
                lstDisplay.Columns.Add(table.Columns[i].ColumnName.ToString(), lstDisplay.Width / 6-1);
            for (int i = 0; i < table.Rows.Count; i++) { 
                ListViewItem row = new ListViewItem();
               for (int j = 0; j < table.Columns.Count; j++)
                    row.SubItems.Add(table.Rows[i][j].ToString());
               lstDisplay.Items.Add(row);
        private void InitializeList() {
            lstDisplay.GridLines = true;
            lstDisplay.AllowColumnReorder = true;
            lstDisplay.LabelEdit = true;
            lstDisplay.FullRowSelect = true;
            lstDisplay.Sorting = SortOrder.Ascending;
            lstDisplay.View = View.Details;

Is there a listView property i forgot to give a value?

The ListViewItem itself represents the first column. Subsequent columns are represented by ListViewSubItems.

for (int i = 0; i < table.Rows.Count; i++)
   ListViewItem row = new ListViewItem(table.Rows[i][0].ToString());
   for (int j = 1; j < table.Columns.Count; j++)
      row.SubItems.Add(table.Rows[i][j].ToString());
   lstDisplay.Items.Add(row);
                wow Thank you very much. That was a quick answer to my problem. I need to wait 4 minutes before I can accept your answer. :-D Up
– Jed
                Jul 28, 2012 at 5:26
  

A ListView control displays a list of items that are defined by the ListViewItem class. Each ListViewItem can store subitem objects that are defined by the ListViewItem.ListViewSubItem class.

ListView.Items represents first column and ListViewItem.SubItems represent sub item for each rows. So that your code should be like this:

for (int i = 0; i < table.Rows.Count; i++)
   ListViewItem row = new ListViewItem(table.Rows[i][0].ToString());
   for (int j = 1; j < table.Columns.Count; j++)
      row.SubItems.Add(table.Rows[i][j].ToString());
   lstDisplay.Items.Add(row);
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.