调用方法时出现空引用错误

时间:2018-09-13 16:39:46

标签: asp.net nullreferenceexception

我有一个称为NewBatch_GetAndSetBatchID的方法。

当我在Page_Load方法中调用此方法时,它可以正常工作。

但是当我从一个按钮(在同一页面上)调用此方法时,我得到:

  

空引用实例对象引用未设置为对象的实例。

它在以下位置引发错误:

BatchNoTextBox.Text = (batchID += 1).ToString();

调试时,我可以看到我的batchID中填充了一个值。

这是我的代码:

public void NewBatch_GetAndSetBatchID()
    {
        FormView1.ChangeMode(FormViewMode.Insert);


        string connectionString = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
        try
        {
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand sqlCommando = new SqlCommand("SELECT MAX(BatchNo) FROM BM_BrewBatchHeader", conn);

                try
                {
                    conn.Open();
                    batchID = Convert.ToInt32(sqlCommando.ExecuteScalar());
                }
                catch (Exception)
                {

                }
                finally
                {
                    conn.Close();
                }
            }
        }
        catch (SqlException error)
        {

        }

        try
        {
            TextBox BatchNoTextBox = (TextBox)FormView1.FindControl("BatchNoTextBox");
            BatchNoTextBox.Text = (batchID += 1).ToString();
        }
        catch (Exception)
        {
            throw;
        }
    }

这里可能是什么问题?

我在另一个论坛上找到了解决方案: 我必须使用FormView中的PreRender触发器。使用下面的代码,它可以正常工作。现在,当我将Formview设置为插入或编辑模式时,代码将完美执行。

protected void FormView1_PreRender(object sender, EventArgs e)
        {
            // if the mode is Edit or Insert
            if (this.FormView1.CurrentMode == FormViewMode.Edit || this.FormView1.CurrentMode == FormViewMode.Insert)
            {
                TextBox BatchNoTextBox = (TextBox)FormView1.FindControl("BatchNoTextBox");
                BatchNoTextBox.Text = (batchID += 1).ToString();
            }
        }

0 个答案:

没有答案