C#中listview如何分组显示。?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中listview如何分组显示。?相关的知识,希望对你有一定的参考价值。

我想把我查询出的结果“姓名‘”性别“分组显示出来

    添加listview"lvwItems"后Edit Column,添加列头

    itemView = itemManager.ItemCollection;

    从数据源获取数据集合

    foreach(Item itm in itemView)

    ListViewItem lviI = new ListViewItem(itm.ItemName); "%");

    itemView = itemManager.ItemCollection;

    lviI.SubItems.Add(itm.ItemType.ToString());

    lviI.SubItems.Add(itm.ItemInput.ToString());

    lviI.SubItems.Add(itm.ItemRate.ToString()+

    lviI.SubItems.Add(itm.ItemTime.ToString());

    lviI.Tag = itm.ItemID;

    lvwItems.Items.Add(lviI);

    遍历数据集合ItemView并获取数据,生成ListViewItem对象Lvil,添加到lvwItems.Items里

     (lviI.SubItems.Add(itm.ItemType.ToString());这句就是添加每一列的值,作为subItem)

参考技术A private void button1_Click(object sender, EventArgs e)

listView2.Groups.Clear();
listView2.Items.Clear();

listView2.View = View.LargeIcon;
ColumnHeader columnHeader0 = new ColumnHeader();
columnHeader0.Text = "Title";
columnHeader0.Width = 200;
ColumnHeader columnHeader1 = new ColumnHeader();
columnHeader1.Text = "Author";
columnHeader1.Width = 200;
ColumnHeader columnHeader2 = new ColumnHeader();
columnHeader2.Text = "Year";
columnHeader2.Width = 100;

if (listView2.Columns.Count < 3)

listView2.Columns.AddRange(new ColumnHeader[] columnHeader0, columnHeader1, columnHeader2 );


ListViewGroup group1 = new ListViewGroup("001");
ListViewGroup group2 = new ListViewGroup("002");

listView2.Groups.Add(group1);
listView2.Groups.Add(group2);

// Create items and add them to myListView.
ListViewItem item0 = new ListViewItem(new string[]
"Programming Windows", "Petzold, Charles", "1998" , 0, group1);
ListViewItem item1 = new ListViewItem(new string[]
"Code: The Hidden Language of Computer Hardware and Software", "Petzold, Charles", "2000" , 0, group1);
ListViewItem item2 = new ListViewItem(new string[]
"Programming Windows with C#", "Petzold, Charles", "2001" , 0, group1);
ListViewItem item3 = new ListViewItem(new string[]
"Coding Techniques for Microsoft Visual Basic .NET", "Connell, John", "2001" , 1, group2);
ListViewItem item4 = new ListViewItem(new string[]
"C# for Java Developers", "Jones, Allen & Freeman, Adam", "2002" , 1, group2);
ListViewItem item5 = new ListViewItem(new string[]
"Microsoft .NET XML Web Services Step by Step", "Jones, Allen & Freeman, Adam", "2002" , 1, group2);
listView2.Items.AddRange(new ListViewItem[] item0, item1, item2, item3, item4, item5 );



private void button2_Click(object sender, EventArgs e)


listView2.View = View.Details;

C#中如何将txt文件在ListView中按列显示

参考技术A

你好,软糖帮你做了一个读取TXT的程序。

这个数据格式需要有分割符才好被切分。处理成类似下面这样的

    商品编码:001,商品名称:香蕉250g, 中类名称:水果, 规格型号:A1,计量单位:吨, 订货数量:3400,库存数量:3400,商品产地:哥伦比亚

    商品编码:002,商品名称:梨子500g, 中类名称:水果, 规格型号:A1,计量单位:吨, 订货数量:6400,库存数量:3400,商品产地:菲律宾

    商品编码:003,商品名称:芒果750g, 中类名称:水果, 规格型号:A1,计量单位:吨, 订货数量:7400,库存数量:3400,商品产地:泰国

    商品编码:004,商品名称:牛奶250ml, 中类名称:奶制品, 规格型号:A1,计量单位:箱, 订货数量:84000,库存数量:3400,商品产地:新西兰

然后上代码咯,主要用一个DataTable暂存数据,以免出现某字段缺失导致的错位。

然后使用StreamReader读取TXT文本,最后把DataTable的数据集逐项添加到ListView,详细用法请看代码。

using System.IO;

namespace ListView用法 
    public partial class Form1 : Form 
        //第一个字段为主键:商品编码
        List<string> 字段列表 = new List<string>() 
            "商品编码", "商品名称", "中类名称", "规格型号",
            "计量单位", "订货数量", "库存数量", "商品产地" ;
        List<int> 显示宽度 = new List<int>()  80, 120, 80, 80, 80, 80, 100, 160 ;
        public string[] 分隔符 =  "," ;
        public string[] 值分隔符 =  ":" ;
        public string 数据文件路径 = @"J:\\Mini\\ListView用法\\ListView用法\\TestData.txt";
        DataTable 数据表;

        public Form1() 
            InitializeComponent();
        

        private void Form1_Load(object sender, EventArgs e) 
            listView1.View = View.Details;
            for (int i = 0; i < 字段列表.Count; i++) 
                string 字段名 = 字段列表[i];
                listView1.Columns.Add(字段名, 字段名, 显示宽度[i]);
            
            var k = listView1.Items.Add("暂无数据");
            k.BackColor = Color.LightPink;
        

        private void 测试() 
            初始化数据表();
            读取文档到数据表(数据文件路径);
            显示在listview();
        

        private void 初始化数据表() 
            数据表 = new DataTable();
            for (int i = 0; i < 字段列表.Count; i++) 
                string 字段名 = 字段列表[i];
                数据表.Columns.Add(字段名, typeof(string));
            
        

        private void 读取文档到数据表(string 路径) 
            StreamReader sr = new StreamReader(路径, Encoding.Default);
            while (true) 
                string 行文本 = sr.ReadLine();
                if (行文本 == null)  break;  else 
                    //开始逐行分析文本
                    if (行文本.Length > 1) 
                        //这里分隔符必须是一个string数组,可以只有一个元素
                        var 数据 = 行文本.Split(分隔符,  StringSplitOptions.RemoveEmptyEntries);
                        if (数据 != null && 数据.Length > 0) 
                            DataRow row = 数据表.NewRow();
                            foreach (var 项 in 数据)                                 
                                var 字段和值 = 项.Split(值分隔符, StringSplitOptions.RemoveEmptyEntries);
                                if (字段和值 != null && 字段和值.Length >= 2) 
                                    var 字段 = 字段和值[0].Trim();
                                    var 值 = 字段和值[1].Trim();
                                    if (字段列表.Contains(字段))  row[字段] = 值; 
                                                                
                            
                            数据表.Rows.Add(row);
                                                               
                    
                
            
        

        private void 显示在listview() 
            listView1.Items.Clear();
            int 列数 = 数据表.Columns.Count;
            for (int i = 0; i < 数据表.Rows.Count; i++) 
                var 记录 = 数据表.Rows[i];
                string 编号 = 记录[字段列表[0]].ToString();
                var 列表项 = listView1.Items.Add(编号, 编号);
                for (int y = 1; y < 列数; y++) 
                    string 值 = 记录[y].ToString();
                    列表项.SubItems.Add(值);
                               
            
        

        private void button1_Click(object sender, EventArgs e) 
            测试();
        
    

以上是关于C#中listview如何分组显示。?的主要内容,如果未能解决你的问题,请参考以下文章

winform c# listview 如何 选中行!急!在线等!

C#在ListView中获取CheckBox选中的值(多选)

c# listview 显示 分组 group

如何在 c# 中使用 JSON 使用 foreach 序列化多个项目?

c# .net listview 与分组

C# winform ListView+CheckBox的做法