如何解决列"Policy_No"不属于表?



我有一个简单的界面,其中有一个文本框,按钮和网格视图。我想在网格视图中显示数字时,单击按钮。但是我得到一个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_NobtnAdd_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数据

相关内容

最新更新