2011-09-08 4 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

Ну, но даже если я использую панель обновления. Я должен сделать щелчок на кнопке после ввода текста в текстовом поле? – Mal

+0

Правильно. На самом деле панель обновления выполняет обратную передачу, но она использует немного обмана, чтобы выглядеть так, как если бы она была асинхронной. Это означает, что вы можете запрограммировать точно так же, как если бы вы выполняли полную обратную передачу, а инфраструктура .net обрабатывает остальное для вас. Просто разместите свою кнопку внутри UpdatePanel, и все будет готово. Весь процесс займет у вас менее 5 минут. –

+0

Элисон все работает нормально. Но когда я помещаю 'TextBox' внутри' 'даже' TextBox' тоже запускается из-за таймера, и я не могу добавить текст. Если я помещаю 'TextBox' снаружи, я не могу очистить его значение. Я разместил отдельный вопрос, пожалуйста, прочитайте его здесь http://stackoverflow.com/q/7355210/903455 – Mal

1

Коротко: JavaScript, JQuery, AJAX

вы должны использовать одну из них, чтобы добиться успеха, что; потому что любая кнопка на странице asp.net, если она работает на сервере, уже отправит postBack.

UpdatePanel является компонентом AJAX, вы можете использовать его, чтобы ваша кнопка не отправляет Postback (или не осуществляется)

+0

Ну, но даже если я использую панель обновления. Я должен сделать щелчок на кнопке после ввода текста в текстовом поле? – Mal

Смежные вопросы