【问题标题】:Alternative to Postback on asp.net page替代 asp.net 页面上的回发
【发布时间】:2014-03-03 17:39:23
【问题描述】:

我正在寻找用户不必在 asp.net 页面中等待回发的替代方法。 我的情况 : 我的 asp.net 页面上有几个下拉列表(实际上是 11 个),并且我有一个复选框。 2个下拉菜单是级联的。即选择第一个下拉菜单会更改第二个下拉菜单的内容。我在一些下拉菜单中有一个新选项(6 个下拉菜单)。如果用户选择此选项,则会显示一个带有“添加”按钮的文本框。将文本添加到该文本框并点击“添加”会将新值添加到下拉列表中并消失此文本框和按钮。那么是否可以使用非回发选项但情况相同?用户不喜欢该页面回发 11 次。我的替代方案是什么?如果您需要更多信息,请询问。谢谢

编辑:

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                                                        <ContentTemplate>
                                                            <asp:DropDownList ID="ddlCustomerContact" runat="server" DataTextField="FullName" DataValueField="Customers_SourceIDfk2" AutoPostBack="true" TabIndex="1" />
                                                        </ContentTemplate>
                                                    </asp:UpdatePanel>  

   Protected Sub ddlCustomerContact_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlCustomerContact.SelectedIndexChanged
    If ddlCustomerContact.SelectedIndex = 1 Then
        divAddNewCustomerContact.Visible = True
    Else
        divAddNewCustomerContact.Visible = False
    End If
End Sub

【问题讨论】:

  • 您在使用网络表单吗?如果是这样,您可以使用 UpdatePanels。
  • @Humpy。我正在寻找/测试更新面板,我做了类似上面的编辑。我为下拉菜单选择了更改的事件,我在它的命中设置了一个断点,但没有任何反应。
  • 您好像错过了触发器。您将希望更新 ContentTemplate 中的所有内容。然后你会想要使用触发器。触发器是您想要执行操作的按钮、下拉菜单等。例如,在我的更新面板中,我使用一个按钮来添加到网格视图。触发器不是发布整个页面,而是 at 按钮,并且 updatepanel 中的控件会更新。
  • @Humpy。我不明白。为简单起见,考虑我只有一个下拉列表和一个隐藏的 div(这个 div 包含标签、文本框和一个按钮)。如果用户在下拉菜单中选择“新建”选项,我应该看到 div,如果没有隐藏 div。这不应该通过回发来完成。你能为我构建一个示例代码吗?

标签: asp.net drop-down-menu postback cascadingdropdown autopostback


【解决方案1】:

如果您不想要标准回发,您唯一真正的选择是 AJAX。有许多可用的框架,因此您可以使用 Microsoft 框架(捆绑在 3.5+ 中)或 jQuery(我相信也捆绑在 VS 2010+ 中)。

还有其他可用的框架,但这两个将是最紧密集成的。其他框架需要更多的工作来实现。

【讨论】:

    【解决方案2】:

    这就是我为我创建的小部件使用更新面板的方式。

    <asp:DropDownList ID="ddlPayrollStores" runat="server" OnSelectedIndexChanged="ddlPayrollStores_SelectedIndexChanged" AutoPostBack="true">
            </asp:DropDownList>
            <asp:UpdatePanel ID="UpdatePanelPayroll" runat="server">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="ddlPayrollStores" EventName="SelectedIndexChanged"></asp:AsyncPostBackTrigger>
                </Triggers>
                <ContentTemplate>
                    <div class="dragbox-content">
                        <asp:Label ID="lblLabelHours" runat="server" Text="Reg Hours: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalHours" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <asp:Label ID="lblLabelOverTime" runat="server" Text="Total Overtime Hours: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalOvertime" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <asp:Label ID="lblLabelHoliday" runat="server" Text="Total Holiday: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalHoliday" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <asp:Label ID="lblLabelVacation" runat="server" Text="Total Vacation: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalVacation" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <asp:Label ID="lbllableTotalHours" runat="server" Text="Total Hours: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalStoreHours" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <asp:Label ID="lblLabelPay" runat="server" Text="Total Pay: " Width="350px"></asp:Label>
                        <asp:Label ID="lblTotalPay" runat="server" Text=""></asp:Label>
                        <br />
                        <br />
                        <div style="align-content: center">
                            <asp:LinkButton ID="lbDetailed" runat="server" Text="Detailed Report" PostBackUrl="~/Reporting/Payroll/StorePayroll.aspx"></asp:LinkButton>
                        </div>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>
    

    这是用于显示商店总工资单的工资单小部件。因此,当我通过下拉菜单选择要查看的商店时,更新面板将回发而不发回整个页面。就我而言,它只会将数字显示为标签。希望这会引导您朝着正确的方向前进,并且可能会稍微清理一下。

    【讨论】:

    猜你喜欢
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多