【发布时间】:2015-09-30 05:40:12
【问题描述】:
我想要做的是,在将记录保存到数据库之前,我想在 GridView 中显示记录,即当用户填写文本框并单击按钮时,该记录将显示在 GridView 上,序列号为 1、2 , 3 ... 到目前为止,我已经接近了这个。第一条记录添加成功,但添加第二条记录时 DataTable 给出空引用异常。这是正确的方法吗?或者有没有简单的方法来做到这一点。我正在将 Telerik RadGrid 用于 asp.net 。
public DataTable dt;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dt = new DataTable();
dt.Columns.Add("Sn#");
dt.Columns.Add("type");
dt.Columns.Add("AccountTitle");
dt.Columns.Add("Description");
dt.Columns.Add("CostCenter");
dt.Columns.Add("Debit");
dt.Columns.Add("Credit");
sno.Text = "1";
}
}
protected void radGridView2_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
dt = AddRow(dt); // call the method to create row
ViewState["dt"] = dt;
dt = (DataTable)ViewState["dt"];
radGridView2.DataSource = dt;
}
private DataTable AddRow(DataTable dt)
{ // method to create row
DataRow dr = dt.NewRow();
dr[0] = sno.Text;
dr[1] = type.Text;
dr[2] = htitle.Text;
dr[3] = disc.Text;
dr[4] = job.SelectedItem.Text;
dr[5] = drr.Text;
dr[6] = crr.Text;
dt.Rows.Add(dr);
return dt;
}
protected void b1_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)ViewState["dt"];
ViewState["dt"] = AddRow(dt);
radGridView2.Rebind();
Session["cttt"] = Convert.ToInt32(sno.Text)+1;
sno.Text = Session["cttt"].ToString();
}
【问题讨论】:
-
你在哪一行得到空点异常
-
private DataTable AddRow(DataTable dt) { // 创建行的方法 DataRow dr = dt.NewRow();在这条线上兄弟
-
不是 100% 确定 --- 但在 page_load 中写入 else of if(!IsPostBack){...} else {DataTable dt = (DataTable)ViewState["dt"];}
-
仍然显示相同的异常。 :(
标签: c# asp.net gridview telerik