下面是我从数据库中获取数据行 填充listView1中的项注意 ListViewItem i = new ListViewItem(r[0].ToString(),0);这样的话 数据库中第一列会重复,等于有2个第一列的,我用了判定解决了问题
foreach (object o in r.ItemArray)
{
if (b == false)
{
b = true;
continue;
}请问有没的更好的办法解决这个问题呢?就像填充列一样
foreach (DataColumn d in ds.Tables["t"].Columns)
{
listView1.Columns.Add(d.ColumnName, 100, HorizontalAlignment.Left);
}下面是详细的代码 请高手指点一下string strConn = " Initial Catalog=SYXT;Data Source = LEIKE;User ID=sa;Password=sa";
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter("select CTID as 餐台编号,ZT as 状态 from CanTaiID where ZT = 1", conn);
DataSet ds = new DataSet();
da.Fill(ds, "t");

bool b;
foreach (DataRow r in ds.Tables["t"].Rows)
{
ListViewItem i = new ListViewItem(r[0].ToString(),0);
b = false;
foreach (object o in r.ItemArray)
{
if (b == false)
{
b = true;
continue;
}
 
i.SubItems.Add(o.ToString());
}
listView1.Items.Add(i);
}

解决方案 »

  1.   

    for (int i = 0; i < ds.Tables["t"].Rows.Count; i++)
    {
    string [] ItemValue = new string [ ds.Tables["t"].Columns.Count];
    for (int j = 0; j < ds.Tables["t"].Columns.Count; j++)
    {
    // 创建ListViewItem值
    ItemValue[j] = ds.Tables["t"].Rows[i][j].ToString();
    }
    ListViewItem objItem = new ListViewItem( ItemValue);
    listView1.Items.Add( objItem);
    }
      

  2.   

    帮你重构一下
    foreach (DataRow r in ds.Tables["t"].Rows)
    {
    ListViewItem i = null; foreach (object o in r.ItemArray)
    {
    if (i == null)
    {
        i = new ListViewItem(r[0].ToString(),0);;
    }
    else
    {     i.SubItems.Add(o.ToString());
    }
    }
    listView1.Items.Add(i);
    }
      

  3.   

    你可以参照这样的方法
    先定义两个字段:
    public int dr_count;
    public DataTable dt_tp;然后在主函数中调用下面两个方法:
    this.dt_tp = this.get_datatable();
    this.listview_show(this.dr_count);/// <summary>
    /// 获取数据
    /// </summary>
    private DataTable get_datatable()
    {
            string strConn = " Initial Catalog=SYXT;Data Source = LEIKE;User 
            ID=sa;Password=sa";
            SqlConnection conn = new SqlConnection(strConn);
            SqlDataAdapter da = new SqlDataAdapter("select CTID as 餐台编号,ZT as 状态 from CanTaiID where ZT = 1", conn);
            DataSet ds = new DataSet();
            da.Fill(ds, "t");
    this.dr_count = ds.Tables["t"].Rows.Count; return ds.Tables["t"];}/// <summary>
    /// 填充ListView
    /// </summary>
    private void listview_show(int count)
    {
    this.listView1.View = View.Details;
    this.listView1.GridLines = true;
    this.listView1.Columns.Add("第一列",80,HorizontalAlignment.Center);
    this.listView1.Columns.Add("第二列",80,HorizontalAlignment.Center);
    this.listView1.Columns.Add("第三列",80,HorizontalAlignment.Center);
    this.listView1.Columns.Add("第四列",80,HorizontalAlignment.Center);

    foreach(DataRow dr in this.dt_tp.Rows)
    {
    ListViewItem lstItem = new ListViewItem(new string[]{   dr[0].ToString(),
    dr[1].ToString(),
    dr[2].ToString(),
    dr[3].ToString()});
    this.listView1.Items.Add(lstItem);
    }
    }