簡體   English   中英

顯示異常 - 未將對象引用設置為對象的實例

[英]Showing Exception - Object reference not set to an instance of an object

在這行代碼dr = dt.Rows[k]; 我得到異常Object reference not set to an instance of an object. 我哪里錯了?

public partial class EditEngClgList : Form
        { 
          public EditEngClgList()
            {
                InitializeComponent();
                try
                {
                    acccon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb");
                    acccon.Open();
                }
                catch (Exception err)
                {
                    MessageBox.Show("Error:" + err);
                }
                string sql = "Select * From EngColeges order by EngClgID";
                da = new OleDbDataAdapter(sql, acccon);
                cmdb = new OleDbCommandBuilder(da);

                dt1 = new DataTable();
                da.Fill(dt1);
                bs = new BindingSource();
                bs.DataSource = dt1;

                dataGridView1.DataSource = bs;
                dataGridView1.Columns[1].Visible = false;
            }
     private void button4_Click(object sender, EventArgs e)
            {
                List<int> checkedclg = new List<int>();
                DataRow dr;
                List<int> checkedclgid = new List<int>();
                for (int i = 0; i <= dataGridView1.RowCount - 1; i++)
                {
                    if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["Delete"].Value) == true)
                    {
                        checkedclg.Add(i);
                        checkedclgid.Add(Convert.ToInt16(dataGridView1.Rows[i].Cells["Delete"].Value)); 
                    }
                }
                foreach (int k in checkedclg)
                {
                    dr = dt.Rows[k]; //this datatable object I hae created in another function              
                    dt.Rows[k].Delete();
                    foreach (int j in checkedclgid)
                    {
                        OleDbCommand oleDbCommand = new OleDbCommand("DELETE FROM EngColeges WHERE EngClgID = @clgID", acccon);
                        oleDbCommand.Parameters.Add("@clgID", OleDbType.Integer).Value = j;
                        oleDbCommand.Prepare();
                        oleDbCommand.ExecuteNonQuery();

                    }
                }
            }

謝謝你的幫助

在該行上放置一個斷點 - 很可能是dt對象為null。

為了解決k可能大於Rows.Count的注釋,我認為如果問題是k ,你會得到一個異常,表明索引超出范圍( IndexOutOfBoundsException )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM