2011-09-08 8 views
1

私の下のコードでは、ボタンがクリックされたときにテキストボックスの値がデータベースに追加され、DataBinderに同じものが表示され、ページが再読み込みされます。まあ、チャットスクリプトと同じように、私はポストバックなしで全プロセスを完了する必要があります。したがって、ページをリロードすることなく、テキストボックスからDataBinderに値を渡す方法。すなわち、ポストバックしないようにボタンをクリックする方法。Button_Click PostBack

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

さてあなたのボタンは、ポストバックを送信しないように、あなたは、それを使用することができます(または、あなたが行われていない)、AJAXコンポーネントです。私はテキストを入力した後にボタンをクリックする必要があります右のテキストボックスですか? – Mal

+0

正しい。実際には、更新パネルはポストバックを実行しますが、それは非同期であるかのようにちょっとしたトリッキーを使います。これは、まるで完全なポストバックを実行していて、.netフレームワークが残りの部分を処理しているかのように正確にコーディングできることを意味します。 UpdatePanelの中​​にボタンを置くだけで完了します。全体のプロセスは5分以内に行かなければなりません。 –

+0

アリソンはすべて正常に動作しています。しかし、 'の中に' TextBox'を置くと、 'TextBox 'でもタイマーのせいで起動してしまい、テキストを追加できません。私が 'TextBox'を外に置くと、その値をクリアすることができません。私は別の質問を投稿してくださいここでそれをお読みくださいhttp://stackoverflow.com/q/7355210/903455 – Mal

1

詳しい情報はJavaScript、jQueryの、AJAX

は、あなたがそれを成功するために、それらのいずれかを使用する必要があります。 asp.netページ上の任意のボタンがサーバー上で実行されている場合は、既にpostBackを送信します。

のUpdatePanelは、私は、更新パネルを使用している場合でも、

+0

まあ、私は更新パネルを使用する場合でも。私はテキストを入力した後にボタンをクリックする必要があります右のテキストボックスですか? – Mal

関連する問題