У меня есть код на панели обновления, и хотя при нажатии кнопки я вставляю данные в базу данных и просто вызываю Updatepanel.Update (), вся страница перезагружается:
Подарки.ASPX
<table style = "width:100%;">
<tr>
<td>
<asp:Label ID = "Label2" runat = "server" Text = "Gift"></asp:Label>
</td>
<td>
<asp:UpdatePanel ID = "UpdatePanel3" runat = "server" UpdateMode = "Conditional">
<ContentTemplate>
<asp:TextBox ID = "txtNewGift" runat = "server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
<tr>
Подарки.aspx.CS
protected void cmdAddGift_Click(object sender, EventArgs e)
{
OleDbConnection objConn = new OleDbConnection(DataSource);
Random r = new Random();
int giftID = r.Next(1200, 14000);
OleDbCommand objCommand = new OleDbCommand("Insert into Gifts (GiftID, Description) values (" + giftID + ",'" + txtNewGift.Text + "')", objConn);
ExecuteCommand(objCommand);
PopulateGifts(objConn);
txtNewGift.Text = "";
UpdatePanel3.Update();
}
Есть идеи, почему вся эта страница будет перезагружена вместо обновления только текстового поля?





Где кнопка на Gifts.ASPX? Если вы поместите кнопку внутри UpdatePanel или используете триггеры, вам не нужно вызывать UpdatePanel3.Update (); из кода позади.
Кроме того, на вашей странице должен быть объект ScriptManager. У тебя есть одна?
Где находится кнопка в приведенном выше примере? Внутри или вне UpdatePanel. Если он находится снаружи, вам нужно будет добавить его в коллекцию триггеров UpdatePanel.
Также вам нужно вызвать UpdatePanel.Update () только в том случае, если вы изменяете содержимое UpdatePanel, отличное от того, которое вызвало (частичную) обратную передачу.
В качестве побочного примечания (и личного крестового похода) рекомендуется использовать оператор using вокруг вашего соединения с БД.
С разметкой ниже произойдет следующее:
Разметка:
<asp:UpdatePanel runat = "server">
<ContentTemplate>
<!-- Content -->
<asp:Button runat = "server" ID = "btnInnerPart" Text = "Inner Part" />
<asp:Button runat = "server" ID = "btnInnerFull" Text = "Inner Full" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID = "btnOuterPart" />
<asp:PostBackTrigger ControlID = "btnInnerFull" />
</Triggers>
</asp:UpdatePanel>
<asp:Button runat = "server" ID = "btnOuterFull" Text = "Outer Full" />
<asp:Button runat = "server" ID = "btnOuterPart" Text = "Outer Part" />
пожалуйста, проверьте тег панели обновления ... вы должны указать триггерные элементы управления для панели обновления, на которой панель обновлений будет получать обновление