我在更新面板中有代码,即使按下按钮,我也会将数据插入到数据库中,只需调用Updatepanel.Update()即可重新加载整个页面:
Gifts.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>
Gifts.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();
}
为什么整个页面会重新加载而不仅仅是文本框获取更新的任何想法?
答案 0 :(得分:3)
上例中的按钮在哪里? UpdatePanel内部或外部。如果它在外面,则需要将其添加到UpdatePanel的触发器集合中。
如果要更改UpdatePanel的内容而不是导致(部分)回发的内容,则只需要调用UpdatePanel.Update()。
作为附注(和个人讨伐),建议在数据库连接周围加上一个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" />
答案 1 :(得分:2)
Gifts.ASPX上的按钮在哪里?如果您将按钮放在UpdatePanel内或使用触发器,则无需调用UpdatePanel3.Update();来自背后的代码。
答案 2 :(得分:1)
此外,您需要在页面上有一个ScriptManager对象。你有吗?
答案 3 :(得分:0)
请检查更新面板的标签...您必须为更新面板指定更新面板将更新的触发器控件