Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# listview不存在所选行/列c的数据#InvalidOperationException_C#_Listview_Exception_Selectedindexchanged - Fatal编程技术网

C# listview不存在所选行/列c的数据#InvalidOperationException

C# listview不存在所选行/列c的数据#InvalidOperationException,c#,listview,exception,selectedindexchanged,C#,Listview,Exception,Selectedindexchanged,我100%确信我的listview有数据。我的程序将从我的listview的第0列获取ID,连接到数据库,并使用该ID作为我的引用将从我的数据库获取数据,并将其显示到我的文本框/组合框中。因此,当我从listview中单击一个项目时,会出现一个异常,所有文本框和组合框都是空的。我是c#和编程新手,任何帮助都将不胜感激 using System; using System.Data.OleDb; namespace WindowsFormsApp2 { public partial cl

我100%确信我的listview有数据。我的程序将从我的listview的第0列获取ID,连接到数据库,并使用该ID作为我的引用将从我的数据库获取数据,并将其显示到我的文本框/组合框中。因此,当我从listview中单击一个项目时,会出现一个异常,所有文本框和组合框都是空的。我是c#和编程新手,任何帮助都将不胜感激

using System;
using System.Data.OleDb;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        private string button = null;
        private string carID;

        public Form1()
        {
            InitializeComponent();
            textDateReg.Text = DateTime.Now.ToString();
            lvRefresh();
        }

        private void lvRefresh()
        {
            listView1.Items.Clear();
            listView1.View = View.Details;
            OleDbConnection con = new OleDbConnection();
            con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\genesis\\Documents\\Database2.accdb";
            con.Open();

            OleDbCommand cmd = new OleDbCommand("Select ID, PlateNo from Cars", con);
            OleDbDataReader cmdrdr = cmd.ExecuteReader();

            if (cmdrdr.HasRows)
            {
                while (cmdrdr.Read())

                {
                    ListViewItem list = new ListViewItem(cmdrdr["ID"].ToString());
                    list.SubItems.Add(cmdrdr["PlateNo"].ToString());
                    listView1.Items.Add(list);
                }
            }

            con.Close();
            cmdrdr.Close();
            cmd.Dispose();
        }

        private void buttonNew_Click(object sender, EventArgs e)
        {
            button = "new";
            buttonSub.Enabled = true;
            panel1.Enabled = true;
        }

        private void textBox7_MouseClick(object sender, MouseEventArgs e)
        {
            textBox7.Text = null;
        }

        private void buttonSub_Click(object sender, EventArgs e)
        {
            switch (button)
            {
                case "new":

                    DialogResult dialogResult = MessageBox.Show("Are you sure you want to Register?", "Confirm", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        string Adrs = this.textADRS.Text;
                        string Fname = this.textFN.Text;
                        string Mname = this.textMN.Text;
                        string Lname = this.textLN.Text;
                        string Age = this.textAGE.Text;
                        string RegDate = this.textDateReg.Text;
                        string Gender = comboGender.SelectedItem.ToString();
                        string Phone = this.textPHONE.Text;
                        string Color = this.textColor.Text;
                        string Type = this.comboType.SelectedItem.ToString();
                        string Brand = this.textBrand.Text;
                        string Model = this.textModel.Text;
                        string PlateNo = this.textPlateNo.Text;

                        try
                        {
                            OleDbConnection con = new OleDbConnection();
                            con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\genesis\\Documents\\Database2.accdb";
                            OleDbCommand cmd = new OleDbCommand("Insert into Drivers (FirstName,MiddleName,LastName,Address,Age,PhoneNo,Gender,RegDate) Values (@FirstName,@MidName,@LastName,@Address,@Age,@Phone,@Gender,@RegDate)", con);
                            con.Open();
                            cmd.Parameters.Add(new OleDbParameter("@FirstName", Fname));
                            cmd.Parameters.Add(new OleDbParameter("@MidName", Mname));
                            cmd.Parameters.Add(new OleDbParameter("@LastName", Lname));
                            cmd.Parameters.Add(new OleDbParameter("@Address", Adrs));
                            cmd.Parameters.Add(new OleDbParameter("@Age", Age));
                            cmd.Parameters.Add(new OleDbParameter("@Phone", Phone));
                            cmd.Parameters.Add(new OleDbParameter("@Gender", Gender));
                            cmd.Parameters.Add(new OleDbParameter("@RegDate", RegDate));
                            cmd.ExecuteNonQuery();
                            cmd.Dispose();
                            cmd = new OleDbCommand("Insert into Cars(Color, Brand, Model, Type, PlateNo) Values(@Color, @Brand, @Model, @Type, @PlateNo)", con);
                            cmd.Parameters.Add(new OleDbParameter("@Color", Color));
                            cmd.Parameters.Add(new OleDbParameter("@Brand", Brand));
                            cmd.Parameters.Add(new OleDbParameter("@Model", Model));
                            cmd.Parameters.Add(new OleDbParameter("@Type", Type));
                            cmd.Parameters.Add(new OleDbParameter("@PlateNo", PlateNo));
                            cmd.ExecuteNonQuery();
                            con.Close();
                            cmd.Dispose();

                            MessageBox.Show("Record Submitted", "Nice!");

                            lvRefresh(); //refresh listview
                        }
                        catch (Exception es)
                        {
                            MessageBox.Show(es.Message);
                        }
                    }

                    break;

                case "del":

                    dialogResult = MessageBox.Show("Are you sure you want to Register?", "Confirm", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        string Adrs = this.textADRS.Text;
                        string Fname = this.textFN.Text;
                        string Mname = this.textMN.Text;
                        string Lname = this.textLN.Text;
                        string Age = this.textAGE.Text;
                        string RegDate = this.textDateReg.Text;
                        string Gender = comboGender.SelectedItem.ToString();
                        string Phone = this.textPHONE.Text;
                        string Color = this.textColor.Text;
                        string Type = this.comboType.SelectedItem.ToString();
                        string Brand = this.textBrand.Text;
                        string Model = this.textModel.Text;
                        string PlateNo = this.textPlateNo.Text;

                        try
                        {
                        }
                        catch
                        {
                        }
                    }

                    break;

                case "edit":
                    break;
            }
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            panel1.Enabled = true;//panel that contains my textboxes/comboboxes
            buttonDel.Enabled = true;
            try
            {
                ListViewItem item = listView1.SelectedItems[0];
                carID = item.Text;

                OleDbConnection con = new OleDbConnection();
                con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\genesis\\Documents\\Database2.accdb";
                OleDbCommand cmd = new OleDbCommand("Select * from Drivers where ID = @ID", con);
                con.Open();
                cmd.Parameters.AddWithValue("@ID", carID);
                OleDbDataReader rdr = cmd.ExecuteReader();

                while (rdr.HasRows)
                {
                    textFN.Text = rdr["FirstName"].ToString();
                    textMN.Text = rdr["MiddleName"].ToString();
                    textLN.Text = rdr["LastName"].ToString();
                    textADRS.Text = rdr["Address"].ToString();
                    textPHONE.Text = rdr["PhoneNo"].ToString();
                    textDateReg.Text = rdr["RegDate"].ToString();
                    textAGE.Text = rdr["Age"].ToString();
                    comboGender.Text = rdr["Gender"].ToString();

                    if (!rdr.HasRows)
                    {
                        rdr.Close();
                        cmd.Dispose();

                        OleDbCommand cmdc = new OleDbCommand("Select * from Cars where ID = @ID", con);
                        cmdc.Parameters.AddWithValue("@ID", carID);
                        OleDbDataReader rdrc = cmdc.ExecuteReader();
                        while (rdrc.HasRows)
                        {
                            textColor.Text = rdr["Color"].ToString();
                            comboType.Text = rdr["Type"].ToString();
                            textBrand.Text = rdr["Brand"].ToString();
                            textModel.Text = rdr["Model"].ToString();
                            textPlateNo.Text = rdr["PlateNo"].ToString();
                        }
                        rdrc.Close();
                        cmdc.Dispose();
                        con.Close();
                    }
                }
            }
            catch (Exception es)
            {
                MessageBox.Show(es.Message);
            }
        }
    }
}

将例外添加到问题我已经编辑了我的问题将例外添加到问题我已经编辑了我的问题