我有以下代码:
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,初学者!
答案 0 :(得分:2)
您从中获取ViewState
的{{1}}对象不包含任何DataTable
。
问题是您要在DataTable
对象中分配DataTable
,该对象的密钥为 v1 ,但您是从 vi 访问的。所以 vi 不包含任何内容。
在按钮单击事件处理程序代码的第一行中尝试使用此功能。
ViewState