Ajax回调UpdatePanel.Update()仍在重新加载整个页面

时间:2008-11-16 04:56:40

标签: asp.net database ajax updatepanel

我在更新面板中有代码,即使按下按钮,我也会将数据插入到数据库中,只需调用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();
}

为什么整个页面会重新加载而不仅仅是文本框获取更新的任何想法?

4 个答案:

答案 0 :(得分:3)

上例中的按钮在哪里? UpdatePanel内部或外部。如果它在外面,则需要将其添加到UpdatePanel的触发器集合中。

如果要更改UpdatePanel的内容而不是导致(部分)回发的内容,则只需要调用UpdatePanel.Update()。

作为附注(和个人讨伐),建议在数据库连接周围加上一个using语句。

使用下面的标记,将发生以下情况:

  • btnInnerPart位于更新面板内,因此会自动导致部分回发
  • btnInnerFull将导致完整的回发,因为它在触发器集合中有一个PostBackTrigger
  • btnOuterPart将导致部分回发,因为它在触发器集合中具有AsyncPostBackTrigger
  • btnOuterFull将导致完整的回发,因为它在UpdatePanel之外

标记:

<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)

请检查更新面板的标签...您必须为更新面板指定更新面板将更新的触发器控件