2011-12-09 9 views
2

私はSQLテーブルの情報を表示するためにデータグリッドを持っています。そして、ユーザがレコードをデータベースに追加できるようにする簡単なテキストボックスとボタンを持っています。問題は、ユーザーが[追加]をクリックすると、データグリッドは更新するべきですが、それはありません。問題のコードは次のとおりです。Datagridリフレッシュが動作しない

protected void Page_Load(object sender, EventArgs e) 
    { 
     username.Text = Session["username"].ToString(); 
     datetime.Text = DateTime.Now.ToString(); 

     BindData(); 
    } 

protected void BindData() 
    { 
     string SQLQuery = "SELECT * From Filters"; 

     OleDbConnection MyConn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString); 

     DataSet resultsDataSet = new DataSet(); 
     MyConn.Open(); 

     OleDbDataAdapter DataAdapter = new OleDbDataAdapter(SQLQuery, MyConn); 
     DataAdapter.Fill(resultsDataSet); 
     DGFilters.DataSource = resultsDataSet; 
     DGFilters.DataBind(); 

     if (resultsDataSet.Tables[0].Rows.Count == 0) 
     { 
      no_records.Visible = true; 
      DGFilters.Visible = false; 
     } 
     else 
     { 
      DGFilters.Visible = true; 
      no_records.Visible = false; 
     } 

     MyConn.Close(); 
    } 

    protected void AddFilter_Click(object sender, EventArgs e) 
    { 
     OleDbConnection MyConn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString); 

     MyConn.Open(); 

     string SQLInsert = "INSERT INTO Filters (FilterString) VALUES ('" + FilterToAdd.Text + "')"; 

     OleDbCommand MyCmd = new OleDbCommand(SQLInsert, MyConn); 

     MyCmd.ExecuteNonQuery(); 

     MyConn.Close(); 

     DataBind(); 

    } 

いずれかのアイデアがありますか?

答えて

2

AddFilter_Clickメソッドの最後には、自分の電話番号(BindData())を呼び出して、新しいレコードでグリッドをリフレッシュできるようにする必要があります。今すぐDataBind()を呼び出しています。これは、コントロール全体のWebフォームに適用されている基本クラスのメソッドです。私はこれが何も大したことではないと推測しています。ユーザーが「追加をクリックしたときに、あなたが二回あなたのグリッドに結合しないように

if (!Page.IsPostBack) 
    BindData(); 

BindData(); 

また、あなたのPage_Loadメソッドでは、あなたはおそらくこれを変更することができます'ボタンをクリックします。

+0

cor blimey guvnor。あなたが疲れたときにコードを作成しようとしているときに起こることです。 BindData!= DataBind。 D'oh !!!! –

+0

@ジョナサン - ああスポッタ赤い雄牛はそれを修正:) –

+0

また、この答えは、asp.netバッジのための100以上のupvotesを置くように見える - ありがとう: - P –

関連する問題