0

这是我的代码:

sql = "SELECT * FROM stock";
cmd = new SQLiteCommand(sql, mdb);
SQLiteDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    var_depot = reader["depot"].ToString();

    ajouterlistview1 = new ListViewItem(reader["id"].ToString());
    ajouterlistview1.SubItems.Add(reader["article"].ToString());

    listView1.Items.Add(ajouterlistview1);
    listView1.Refresh();

    for (int i = 0; i < listView1.Columns.Count; i++)
    {
        if (var_depot == listView1.Columns[i].Text)
        {
            for (int j = 0; j < listView1.Items.Count; j++)
            {
                /*if (listView1.Columns[i].Text == var_depot )
                {*/
                listView1.Items[j].SubItems[1].Text = reader["quantite"].ToString();
                //}
            }
        }
    }
}

此代码工作正常,但是当我更改此行时:

listView1.Items[j].SubItems[1].Text = reader["quantite"].ToString();

到这一行:

listView1.Items[j].SubItems[i].Text = reader["quantite"].ToString();

我收到一个错误,因为我的 X 行没有定义:/

请问我该怎么办?

4

1 回答 1

0

看起来你有listView1.Columns超过listView1.Items[...].SubItems. 添加一些空的 subItems ( ajouterlistview1.SubItems.Add("")) 以确保您可以访问 listView1.Items[...].SubItems[i].Text。

试试这个方法:

    for (int i = 0; i < listView1.Columns.Count; i++)
    {
        if (var_depot == listView1.Columns[i].Text)
        {
            ajouterlistview1.SubItems.Add(reader["quantite"].ToString());
            break;
        }
        else
            ajouterlistview1.SubItems.Add("");
    }
于 2015-03-25T18:16:48.777 回答