2016-08-30 21 views
1

私は、テキストボックス、ボタン、およびグリッドビューを持つシンプルなインターフェイスを持っています。ボタンをクリックすると、グリッドビューに数値が表示されます。しかし、私は、"Column 'Policy_No'がテーブル" "に属していないというArgumentExceptionを受け取ります。私はそれを解決するために何をすべきですか?ここで私は以下のコードを追加しました。 columnPolicy_No'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(); 

     } 
} 

答えて

2

あなたはbtnAdd_Click内部new DataTableを作成しているがバットで列定義を追加します。 ClickイベントにDTの

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(); 
} 

削除初期化(DataTableの)ページのロードから

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     loadCompetitionsNames(); 
    } 
} 

あなたはそれが動作する

+0

ページポストバックにDTデータを維持するためにセッションを使用することができます。答えをありがとう。それでも私は答えを受け入れることはできません。しかし、私は確かにします。 – Mike

+0

グリッドに複数の値を1つずつ追加するにはどうすればよいですか? – Mike

+0

「ひとつずつ」とはどういう意味ですか? – Mairaj

2

を持っていない

ボタンクリックイベント

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(); 

     } 
} 
関連する問題