datatable 中增加一行.
想做一个输入的界面,请大家给个思路。
我是想通过一个button 的 click事件在 datatable 中增加一行,然后绑定到 datagrid 中,再将该行设置为 edit 。但 button 的click事件激发后, dataTable.NewRow时发生错误(“未将对象引用设置到对象的实例”)代码如下:
namespace fushi.manages
{
/// <summary>
/// adddep 的摘要说明。
/// </summary>
public class adddep : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button add;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected DataTable dt;
protected DataView dv;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack )
{
this.createDv ();
}
}
private void createDv()
{
dt=new DataTable ();
DataColumn dc=new DataColumn ("关键词",typeof(System.String ));
dt.Columns.Add (dc);
dc=new DataColumn ("长度",typeof(Int32));
dt.Columns .Add (dc);
dc=new DataColumn ("布尔型选项",typeof(System.String ));
dt.Columns .Add (dc);
}
private void bindtype()
{
Hashtable ht=new Hashtable ();
ht.Add (1,"字符串型");
ht.Add (2,"整型");
foreach(System.Web .UI .WebControls .DataGridItem item in DataGrid1.Items )
{
DropDownList dp=(DropDownList)item .FindControl ("keytype");
dp.DataSource =ht;
dp.DataTextField ="value";
dp.DataValueField ="key";
dp.DataBind ();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.add.Click += new System.EventHandler(this.add_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void add_Click(object sender, System.EventArgs e)
{
DataRow dr=dt.NewRow (); //错误(“未将对象引用设置到对象的实例”
// dt.Rows .InsertAt (dr,0);
dt.Rows .Add (dr);
dv=dt.DefaultView ;
this.DataGrid1 .DataSource =dv;
this.DataGrid1 .DataBind ();
this.bindtype ();
}
}
}