我有一个简单的界面,其中有一个文本框,按钮和网格视图。我想在网格视图中显示数字时,单击按钮。但是我得到一个ArgumentException说"列'Policy_No'不属于表"。我该怎么解它呢?在这里我添加了下面的代码。
按钮点击事件
protected void btnAdd_Click(object sender, EventArgs e)
{
dt = new DataTable();
dr = dt.NewRow();
dr["Policy_No"] = txtPolicy.Text.Trim();
dt.Rows.Add(dr);
grdPolicy.DataSource = dt;
grdPolicy.DataBind();
}
页面加载代码
protected void Page_Load(object sender, EventArgs e)
{
dt = new DataTable();
dt.Columns.Add(new DataColumn("Policy_No", typeof(string)));
if (!IsPostBack)
{
loadCompetitionsNames();
}
}
在没有column
Policy_No
的btnAdd_Click
中创建new DataTable
protected void btnAdd_Click(object sender, EventArgs e)
{
//dt = new DataTable(); Remove this line
dr = dt.NewRow();
dr["Policy_No"] = txtPolicy.Text.Trim();
dt.Rows.Add(dr);
grdPolicy.DataSource = dt;
grdPolicy.DataBind();
Session["PolicyTable"] = dt;
}
protected void Page_Load(object sender, EventArgs e)
{
if(Session["PolicyTable"] !=null)
dt = Session["PolicyTable"] as DataTable;
else
dt = new DataTable();
if (!dt.Columns.Contains("Policy_No"))
dt.Columns.Add(new DataColumn("Policy_No", typeof(string)));
if (!IsPostBack)
{
loadCompetitionsNames();
}
}
在Button Click Event中添加列定义
public DataTable GetGridData()
{
dt = new DataTable();
dt.Columns.Add(new DataColumn("Policy_No", typeof(string)));
dr = dt.NewRow();
dr["Policy_No"] = txtPolicy.Text.Trim();
dt.Rows.Add(dr);
return dt;
}
protected void btnAdd_Click(object sender, EventArgs e)
{
grdPolicy.DataSource = GetGridData();
grdPolicy.DataBind();
}
从页面加载中删除dt(DataTable)的初始化
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
loadCompetitionsNames();
}
}
您可以使用会话来保存页面回发的dt数据