2011-12-09 116 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(),這是基類Control上的一個方法,它被應用到你的整個Web表單上。我猜這不是什麼大事。

而且,在你的Page_Load方法,你或許可以改變這一點:

BindData(); 

if (!Page.IsPostBack) 
    BindData(); 

,這樣你就不能結合您的網格兩次當用戶點擊「添加'按鈕。

+0

cor blimey guvnor。多數民衆贊成什麼時發生,當你試圖編碼時,累了。 BindData!= DataBind。 D'哦!!!! –

+0

@Jonathan - uta spotta紅牛oughtta修復:) –

+0

此外 - 看起來像這個答案讓我超過100個asp.net徽章upvotes - 所以謝謝: - P –