2

我在更新面板中有代码,即使单击按钮我将数据插入数据库并简单地调用 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();
}

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

4

4 回答 4

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" />
于 2008-11-16T06:47:23.010 回答
2

Gifts.ASPX 上的按钮在哪里?如果将按钮放在 UpdatePanel 内或使用触发器,则无需调用 UpdatePanel3.Update(); 从后面的代码。

于 2008-11-16T05:03:11.583 回答
1

此外,您需要在页面上有一个 ScriptManager 对象。你是否有一个?

于 2008-11-16T05:06:17.910 回答
0

请检查更新面板的标签...您必须指定更新面板的触发控件,更新面板将在其上进行更新

于 2009-06-22T06:19:25.883 回答