将文本放到MySQL数据库的listview列中?

时间:2019-04-16 12:50:16

标签: c# mysql

我需要能够使用此程序在数据库中更改产品。为此,我需要能够将它们彼此并排放置。我该怎么做呢?

查看图片。 https://imgur.com/a/0Vy5XaC

我试图按照教程进行操作,但我找不到任何东西...

string connectionURL = @"SERVER=localhost;DATABASE=shopkartje;UID=root;PASSWORD=;SslMode=None";


            MySqlConnection connection = null;
            MySqlDataReader rdr = null;

            try
            {
                connection = new MySqlConnection(connectionURL);
                connection.Open();

                string sql = "SELECT * from producten";
                MySqlCommand commando = new MySqlCommand(sql, connection);

                rdr = commando.ExecuteReader();

                while (rdr.Read())
                {
                    lvproducten.Items.Add(rdr.GetString("ID"));
                    lvproducten.Items.Add(rdr.GetString("Productnaam"));
                }
            }
            catch
            {
                MessageBox.Show("Kan bestand niet openen ");
            }
            finally
            {
                connection.Close();
                rdr.Close();
            }

那么将它们彼此相邻的是什么代码?它们需要我单击才能更改或更新。

3 个答案:

答案 0 :(得分:0)

使用Details视图声明ListView并添加两列,然后遍历循环 并添加项目

lvproducten.View = View.Details;
lvproducten.Columns.Add("ID", 100, HorizontalAlignment.Left);
lvproducten.Columns.Add("Productnaam", 150, HorizontalAlignment.Left);

while (rdr.Read())
            {
                //lvproducten.Items.Add(rdr.GetString("ID"));
                //lvproducten.Items.Add(rdr.GetString("Productnaam"));
                string[] str = new string[1];
                ListViewItem itm;
                str[0] = rdr.GetString("ID");
                str[1] = rdr.GetString("Productnaam")
                itm = new ListViewItem(str);
                lvproducten.Items.Add(itm);
            }

答案 1 :(得分:0)

在“详细信息”模式下的ListView中,您有许多数据列(子项)

要在单个调用中添加“行”的数据,您需要准备一个数组

string[] row = { rdr.GetString("ID"),  rdr.GetString("Productnaam")};
var lvItem= new ListViewItem(row); 
lvproducten.Items.Add(lvItem);

要从当前选定的“行”中获取数据,请订阅SelectedIndexChanged事件并查看您的行

void lvproducten_SelectedIndexChanged(object sender, EventArgs e)
{
    if (lvproducten.SelectedItems.Count > 0)
    {
        string id = listView1.SelectedItems[0].SubItems[0].Text;
        string product = listView1.SelectedItems[0].SubItems[1].Text;
        .... update your textboxes....
    }
}

答案 2 :(得分:0)

您在正确的轨道上使用items.add,但每个“项目”都是一行,因此您需要在该行中添加“子项目” ...

ListViewItem item = new ListViewItem(rdr.GetString("ID"));
item.SubItems.Add(rdr.GetString("Productnaam"));
listView1.Items.Add(item);

因此,在这3个步骤中,我们首先创建了一个项目,其次添加了我们的第一个子项目,最后将其添加到了列表视图中。

您的列表视图需要将其属性“视图”设置为详细信息,但是按图片显示,您已经完成了:)

如果要从数据库中添加更多列,您可以像这样向代码中添加更多子项...

ListViewItem item = new ListViewItem(rdr.GetString("ID"));
item.SubItems.Add(rdr.GetString("Productnaam"));
item.SubItems.Add(rdr.GetString("AnotherRow"));
item.SubItems.Add(rdr.GetString("OneMoreForLuck"));
listView1.Items.Add(item);

除了您的注释之外,您还需要将列表视图属性“ FullRowSelect”设置为true,然后使用SelectedIndexChanged事件以及类似以下内容...

private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listView1.SelectedItems.Count > 0)
        {
            //Set the first textbox 
            textBox1.Text = listView1.SelectedItems[0].SubItems[0].Text;
            //Set the second textbox
            textBox2.Text = listView1.SelectedItems[0].SubItems[1].Text;
        }
    }