В моем нижнем коде, когда кнопка нажата, значение текстового поля добавляется в базу данных и то же самое отображается в 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();
}
Ну, но даже если я использую панель обновления. Я должен сделать щелчок на кнопке после ввода текста в текстовом поле? – Mal
Правильно. На самом деле панель обновления выполняет обратную передачу, но она использует немного обмана, чтобы выглядеть так, как если бы она была асинхронной. Это означает, что вы можете запрограммировать точно так же, как если бы вы выполняли полную обратную передачу, а инфраструктура .net обрабатывает остальное для вас. Просто разместите свою кнопку внутри UpdatePanel, и все будет готово. Весь процесс займет у вас менее 5 минут. –
Элисон все работает нормально. Но когда я помещаю 'TextBox' внутри' ContentTemplate> asp: UpdatePanel> 'даже' TextBox' тоже запускается из-за таймера, и я не могу добавить текст. Если я помещаю 'TextBox' снаружи, я не могу очистить его значение. Я разместил отдельный вопрос, пожалуйста, прочитайте его здесь http://stackoverflow.com/q/7355210/903455 – Mal