none
C# 关于给ListViewItem循环赋值的问题 RRS feed

  • 问题

  •            ...上方省略 我是用数据库查出来的记录,用一个数组接收,但是记录有100条,把数组里的元素一个个的赋到listview上这样太麻烦了,并且不能实现动态的效果,老师们有什么办法吗?

                this.lv_musiclist.Columns.Add("歌曲名", 300);
                
                ListViewItem gq1 = new ListViewItem(sg[0], 0);
                this.lv_musiclist.Items.Add(gq1);
                ListViewItem gq2 = new ListViewItem(sg[1], 1);
                this.lv_musiclist.Items.Add(gq2);
                ListViewItem gq3 = new ListViewItem(sg[2], 2);
                this.lv_musiclist.Items.Add(gq3);
                ListViewItem gq4 = new ListViewItem(sg[3], 3);
                this.lv_musiclist.Items.Add(gq4);

    2012年4月4日 2:57

答案

  • 您好,
    或许您能使用「Data binding a ListView

    ,请参考:Data binding a ListView
    不然就用For...Next

    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Student", con);
    da.Fill(ds);
    DataTable dt = new DataTable();
    dt = ds.Tables[0];
    listView1.View = View.Details;
    listView1.GridLines = true;
    listView1.Columns.Add("Student_No", 150, HorizontalAlignment.Left);
    foreach(DataRow dr in dt.Rows)
    {
    	ListViewItem lvi = new ListViewItem(dr["Student_No"].ToString());
    	lvi.Tag = dr;
    	listView1.Items.Add(lvi);
    }


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 qq31992108 2012年4月4日 7:01
    2012年4月4日 6:08
  • Hi qq31992108,

      亂馬客用SqlAdapter作为SqlDataAdapter 一个数据存储集来得到二维数据并且填充到DataSet 实例中,并且在接下来得到DataSet中的DataTable的每一行DataRow,用Foreach新建每个ListViewItem实例新建进去。


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us


    2012年4月5日 2:37
    版主

全部回复

  • 您好,
    或许您能使用「Data binding a ListView

    ,请参考:Data binding a ListView
    不然就用For...Next

    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Student", con);
    da.Fill(ds);
    DataTable dt = new DataTable();
    dt = ds.Tables[0];
    listView1.View = View.Details;
    listView1.GridLines = true;
    listView1.Columns.Add("Student_No", 150, HorizontalAlignment.Left);
    foreach(DataRow dr in dt.Rows)
    {
    	ListViewItem lvi = new ListViewItem(dr["Student_No"].ToString());
    	lvi.Tag = dr;
    	listView1.Items.Add(lvi);
    }


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已标记为答案 qq31992108 2012年4月4日 7:01
    2012年4月4日 6:08
  • 谢谢老师 您的办法很好用 可以解释下原理吗?

    还有这个问题可以再帮我一下一下吗?http://social.msdn.microsoft.com/Forums/zh-CN/visualcshartzhchs/thread/ec922319-b624-4c54-a70f-f3fb02b886da

    2012年4月4日 7:00
  • Hi qq31992108,

      亂馬客用SqlAdapter作为SqlDataAdapter 一个数据存储集来得到二维数据并且填充到DataSet 实例中,并且在接下来得到DataSet中的DataTable的每一行DataRow,用Foreach新建每个ListViewItem实例新建进去。


    Jason Wang [MSFT]
    MSDN Community Support | Feedback to us


    2012年4月5日 2:37
    版主