我有一个简单的界面,有一个文本框,按钮和一个gridview。我想在单击按钮时在gridview中显示数字。但我得到一个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();
}
}
答案 0 :(得分:2)
您正在new DataTable
内创建btnAdd_Click
column
Policy_No
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();
}
}
error event
答案 1 :(得分:2)
在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数据