formsdata.dll中的NullReferenceException

时间:2014-09-26 20:15:24

标签: c# nullreferenceexception

我有以下代码:

    protected void Page_Load(object sender, EventArgs e)
    {

        if(!Page.IsPostBack)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("PName");
            dt.Columns.Add("Rate");
            dt.Columns.Add("Qty");
            dt.Columns.Add("Amount");
            dt.AcceptChanges();
            ViewState["v1"] = dt;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        DataTable dt2 = (DataTable)ViewState["vi"];
        string sPname = TextBox1.Text;
        string sRate = TextBox2.Text;
        string sQty = TextBox3.Text;
        double d1 = Convert.ToDouble(sRate)* Convert.ToDouble(sQty);

        DataRow dr = dt2.NewRow();
        dr[0] = sPname;
        dr[1] = sRate;
        dr[2] = sQty;
        dr[3] = d1.ToString("0.00");
        dt2.Rows.Add(dr);
        dt2.AcceptChanges();
        ViewState["v1"] = dt2;

        GridView1.DataSource = dt2;
        GridView1.DataBind();

错误:

DataRow dr = dt2.NewRow();
An exception of type 'System.NullReferenceException' occurred in Formsdata.dll but was not handled in user code

其他信息:Object reference not set to an instance of an object.

插入值并单击按钮后。 我正在使用visual studio 2013,初学者!

1 个答案:

答案 0 :(得分:2)

您从中获取ViewState的{​​{1}}对象不包含任何DataTable

问题是您要在DataTable对象中分配DataTable,该对象的密钥为 v1 ,但您是从 vi 访问的。所以 vi 不包含任何内容。

在按钮单击事件处理程序代码的第一行中尝试使用此功能。

ViewState