2016-11-23 2 views
0

У меня есть следующий код переднего конца:ASP: UpdatePanel не работает, как ожидалось

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Table ID="groupTable" runat="server"></asp:Table> 
    </ContentTemplate> 
</asp:UpdatePanel> 

где «groupTable» генерируются на стороне сервера с несколькими строками текстового поля, как показано ниже

<INPUT onchange="javascript:setTimeout('__doPostBack(\'textbox0\',\'\')', 0)" tabIndex=100 onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id=textbox0 language=javascript value=eeedddeeeee name=textbox0 jQuery19107993684268830612="42"> 

Каждое текстовое поле имеет сообщение назад, потому что есть логика на стороне сервера, которая применяется к соседним элементам управления, так что содержимое элемента управления зависит от предыдущего содержимого управления.

Я ожидаю увидеть, что вся страница не обновляется, а только сама таблица, но получается наоборот.

Я пропустил что-нибудь?

+0

Где вы получите '__doPostBack (\ 'textbox0 \', \ '\')' от? – VDWWD

+0

от редактирования текстового поля. – Lys

ответ

0

Проблема, вероятно, в том, что элементы управления не зарегистрированы для Async Postback. Вы можете сделать 2 вещи. Зарегистрируйте эти текстовые поля для Async Postback или создайте TextBoxes в groupTable динамически из кода позади.

ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(TextBox1); 

Или добавьте TextBoxes непосредственно groupTable

TextBox textBox = new TextBox(); 
textBox.AutoPostBack = true; 
textBox.Text = "Hello World"; 
textBox.TextChanged += TextBox_TextChanged; 

TableRow tableRow = new TableRow(); 

TableCell tableCell = new TableCell(); 
tableCell.Controls.Add(textBox); 
tableRow.Cells.Add(tableCell); 

groupTable.Rows.Add(tableRow); 
Смежные вопросы