2011-09-08 19 views
1

在我下面的代碼中,當點擊按鈕時,文本框的值被添加到數據庫中,並且DataBinder中顯示的值也在重新加載頁面。那麼,就像聊天腳本一樣,我需要完成整個過程而無需回傳。因此,如何在不重新加載頁面的情況下將文本框中的值傳遞給DataBinder。即如何執行按鈕單擊,以便它不回發。Button_Click無回傳

protected void Page_Load(object sender, EventArgs e) 
    { 
      string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=repeater;" + "UID=root;" + "PASSWORD=****;" + "OPTION=3"; 
      OdbcConnection MyConnection = new OdbcConnection(MyConString); 
      try 
      { 
       MyConnection.Open(); 
       OdbcCommand cmd = new OdbcCommand("Select message from table1", MyConnection); 
       OdbcDataReader dr = cmd.ExecuteReader(); 
       ArrayList values = new ArrayList(); 
       while (dr.Read()) 
       { 
        if (!IsPostBack) 
        { 
        string ep = dr[0].ToString(); 
        values.Add(new PositionData(ep)); 
        Shout_Box.DataSource = values; 
        Shout_Box.DataBind(); 
        } 
       } 
      } 
      catch 
      { 
      } 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
      string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=repeater;" + "UID=root;" + "PASSWORD=*****;" + "OPTION=3"; 
      OdbcConnection MyConnection = new OdbcConnection(MyConString); 
      OdbcCommand cmd = new OdbcCommand("INSERT INTO table1(message)VALUES(?)", MyConnection); 
      cmd.Parameters.Add("@email", OdbcType.VarChar, 255).Value = TextBox1.Text; 
      MyConnection.Open(); 
      cmd.ExecuteNonQuery(); 
      MyConnection.Close(); 
    } 

回答

2

快速和骯髒的方法是使用更新面板。您的最終用戶看起來沒有回發,您只需對頁面進行微小的更改即可。

的更多信息:Introduction to the UpdatePanel control(MSDN)

+0

好,但即使我使用更新面板。輸入文本後我應該點擊按鈕是文本框嗎? – Mal

+0

正確。實際上,更新面板執行回發,但它使用一些欺騙手段來顯示,如果它是異步的。這意味着您可以完全編寫代碼,就好像您正在執行完整的回發並且.net框架將爲您處理其餘部分。只需將您的按鈕放入UpdatePanel中即可完成。整個過程應該不到5分鐘。 –

+0

艾莉森一切工作正常。但是,當我把'TextBox'放在''甚至'TextBox'中時,由於計時器而觸發,我無法添加任何文本。如果我把'TextBox'放在外面,我無法清除它的值。我發佈單獨的問題,請在這裏閱讀http://stackoverflow.com/q/7355210/903455 – Mal

1

不久:JavaScript中,jQuery的AJAX

,你必須使用其中的一個,成功是什麼;因爲asp.net頁面上的任何按鈕,如果它在服務器上運行,將已發送回發。

的UpdatePanel是一個AJAX組件,你可以使用它,讓你的按鈕不發送回發(或者你不會受到影響)

+0

那麼,但即使我使用更新面板。輸入文本後我應該點擊按鈕是文本框嗎? – Mal