ListViewItem lvi=new ListViewItem();
lvi.Text=ds.Tables[0].Rows[0][0].ToString();
lvi.SubItems[1].Text=ds.Tables[0].Rows[0][1].ToString();
lvi.SubItems[2].Text=ds.Tables[0].Rows[0][2].ToString();

解决方案 »

  1.   

    这样做效率也太低了吧。应该在一个sql语句能查出所有的。
      

  2.   

    先把查询的结果的总数求出来 len
    for( int i=0;i<len;i++)
    {
      ListViewItem item = new ListViewItem("");
      item.SubItems[i].Text = ds.Tables[0].Rows[0][1].ToString();
    }
      

  3.   

    一个例子:using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using System.Data.SqlClient;namespace TreeViewApp
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class frmListView : System.Windows.Forms.Form
    {
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null;
    private System.Windows.Forms.Button button1;
    private System.Windows.Forms.ListView listView1; public frmListView()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.button1 = new System.Windows.Forms.Button();
    this.listView1 = new System.Windows.Forms.ListView();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(320, 16);
    this.button1.Name = "button1";
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // listView1
    // 
    this.listView1.Location = new System.Drawing.Point(8, 56);
    this.listView1.Name = "listView1";
    this.listView1.Size = new System.Drawing.Size(384, 272);
    this.listView1.TabIndex = 1;
    this.listView1.View = System.Windows.Forms.View.Details;
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(408, 346);
    this.Controls.Add(this.listView1);
    this.Controls.Add(this.button1);
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new frmListView());
    } private void button1_Click(object sender, System.EventArgs e)
    {
    string strConn="server=(local);database=Northwind;uid=sa;pwd=sa";
    string SqlStr = "SELECT * FROM Products"; SqlConnection cn=new SqlConnection(strConn);
    SqlDataAdapter ada=new SqlDataAdapter();
    ada.SelectCommand=new SqlCommand(SqlStr, cn); DataTable dt=new DataTable();
    ada.Fill(dt); ListDataToView(dt);
    }
    private void ListDataToView(DataTable dt)
    {
    this.listView1.FullRowSelect = true;
    this.listView1.Columns.Clear();
    for(int i=0; i<dt.Columns.Count; i++)
    {
    ColumnHeader ch = new ColumnHeader();
    ch.Text = dt.Columns[i].ColumnName;
    this.listView1.Columns.Add(ch);
    }
    for (int i=0;i<dt.Rows.Count; i++)
    {
    ListViewItem tmpItem = new ListViewItem(dt.Rows[i][0].ToString());

    for (int j=1; j<dt.Columns.Count; j++)
    {
    tmpItem.SubItems.Add(dt.Rows[i][j].ToString());
    }
    this.listView1.Items.Add(tmpItem);
    }
    }
    }
    }
      

  4.   

    我写的一个通用方法,看看对你有没有用:/// <summary>
    /// 执行选择类型的存储过程,并将查询返回的数据填充到指定的 ListView 控件中。
    /// </summary>
    /// <param name="procedure">需要执行的 Sql 存储过程。</param>
    /// <param name="listView">需要填充的 ListView 控件。</param>
    /// <returns>如果执行成功返回 true ,否则返回 false 。</returns>
    public static bool Select(string procedure, ListView listView)
    {
        try
        {
            // 设置 ListView 控件视图
            if(listView.View != View.Details) listView.View = View.Details;
            // 定义 SqlConnection 对象
            using(SqlConnection cn = new SqlConnection(Sql.ConnectionString))
            {
                cn.Open();                // 打开Sql链接
                // 定义 SqlCommand 对象
                using(SqlCommand cmd = new SqlCommand(procedure,cn))
                {
                    // 定义 SqlDataReader 对象
                    using(SqlDataReader reader = cmd.ExecuteReader())
                    {
                        listView.Items.Clear();            // 清空 ListView 控件项目
                        listView.Columns.Clear();        // 清空 ListView 控件列标头                    // 逐行读取数据集返回的结构表信息中的数据
                        foreach(DataRow row in reader.GetSchemaTable().Rows)
                        {
                            // 加载 ListView 控件的列标头
                            listView.Columns.Add(
                                row["ColumnName"].ToString(),
                                (listView.Width-20)/reader.GetSchemaTable().Rows.Count,
                                HorizontalAlignment.Left);
                        }
                        if(!reader.HasRows) return true;    // 如果数据集中不包含数据则返回
                        ArrayList Ary = new ArrayList();    // 定义 ArrayList 对象
                        //逐条读取数据记录
                        while(reader.Read())
                        {
                            ListViewItem item = null;    //定义 ListViewItem 对象
                            //循环记录集中的数据
                            for(int i=0; i<reader.FieldCount; i++)
                            {
                                //返回数据信息
                                if(i == 0) item = new ListViewItem(reader[i].ToString());
                                else item.SubItems.Add(reader[i].ToString());
                            }
                            item.ImageIndex = 0;    //设置图像索引
                            Ary.Add(item);            //将 item 加入集合
                        }
                        //实例化 ListViewItem 控件数组
                        ListViewItem[] items = new ListViewItem[Ary.Count];
                        Ary.CopyTo(items);        //填充 ListViewItem 控件数组
                        listView.Items.AddRange(items);    //加载 ListView 控件项目
                    }
                }
                cn.Close();        //关闭Sql链接
                return true;    //返回 true
            }
        }
        catch { return false; }
    }