c# - 多个更新面板的问题

标签 c# asp.net c#-4.0

我正在处理包含多个更新面板的页面。 我通常设置 updatemode='conditional',但是如果我更新其中一个更新面板中的数据,我必须更新所有其他更新面板,否则会在 firebug 的控制台窗口中发生错误并且页面挂起,我应该怎么做才能解决这个问题?


有关此问题的更多详细信息,上图表示一个带有两个更新面板的简单页面。
updatepanel1 中的第一个 gridview 具有 updatemode='conditional'
页面的其余部分位于 updatepanel2 中,具有 更新模式='条件'
场景如下:用户从第一个 gridview 中选择一天,然后我在 jquery 中使用
__doPostBack('btnRefresh', ''); 获取数据以填充第二个 gridview。
注意:带有 id="btnRefresh" 的按钮存在于第二个更新面板中。
请帮助我。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Appointments.aspx.cs" Inherits="Appointments" %>

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">`enter code here`
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
            <title></title>
            <script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>
            <script src="js/FQuery.js" type="text/javascript"></script>
            <link href="style/style-en.css" rel="stylesheet" type="text/css" />
            <link href="style/ModalStyle-mini.css" rel="stylesheet" type="text/css" />
            <script type="text/javascript">
                var cells;
                var isAdd = 1;
                $(document).ready(function () {
                    DoWork();
                    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(requestHandler);

                });
                function requestHandler(sender, args) {
                    DoWork();
                }
                function DoWork() {

                    $("#gvDays .row").click(function () {
                        $("#gvDays .row").removeClass("darkblue");
                        $(this).addClass("darkblue");
                        $("#txtPeriod").val("");
                        $("#txtDay_det_id").val("");
                        cells = $(this).find("td");
                        $("#txtDay_id").val($(cells[0]).text());
                        __doPostBack('btnRefresh', '');
                    });

                    $("#gvDayDet .row").click(function () {
                        $("#gvDayDet .row").removeClass("darkblue");
                        $(this).addClass("darkblue");
                        cells = $(this).find("td");
                        $("#txtDay_det_id").val($(cells[0]).text());
                        $("#txtTimeFrom").val($(cells[2]).text());
                        $("#txtTimeTo").val($(cells[3]).text());
                        $("#txtPeriod").val($(cells[4]).text());
                        __doPostBack('btnDaysDet', '');
                    });
                };
            </script>
        </head>
        <body>
            <form id="form1" runat="server">
            <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
            </asp:ScriptManager>

            <div id="catNewsTab">
                <asp:UpdatePanel runat="server" UpdateMode="Conditional">
                    <ContentTemplate>
                <asp:GridView ID="gvDays" runat="server" AutoGenerateColumns="false">
                    <Columns>
                        <asp:BoundField DataField="day_id" HeaderText="Day No." />
                        <asp:BoundField DataField="day_name" HeaderText="Day Name" />
                    </Columns>
                    <HeaderStyle CssClass="gray" />
                    <RowStyle CssClass="blue1 row" />
                    <SelectedRowStyle CssClass="darkblue row" />
                </asp:GridView>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </div>
            <asp:UpdatePanel ID="upDaysDet" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <div>
                        <asp:Button ID="btnSaveDayDet" Text="Save" runat="server" OnClick="btnSaveDayDet_Click" />
                        <asp:Button ID="btnUpdateDayDet" Text="Update" runat="server" OnClick="btnUpdateDayDet_Click" />
                        <asp:Button ID="btnDeleteDayDet" Text="Delete" runat="server" OnClick="btnDeleteDayDet_Click" />
                        <asp:TextBox ID="txtDay_id" runat="server" CssClass="hide" />
                        <asp:Button ID="btnRefresh" runat="server" CssClass="hide" OnClick="btnRefresh_Click" />
     <asp:Button ID="btnDaysDet" runat="server" CssClass="hide" OnClick="btnDaysDet_Click" />
                    </div>
                    <div style="height: 326px;" class="scroll scrollsmall">
                        <asp:GridView ID="gvDayDet" runat="server" AutoGenerateColumns="false" EmptyDataText="No Results Found">
                            <Columns>
                                <asp:BoundField DataField="day_det_id" HeaderText="day_det_id" />
                                <asp:BoundField DataField="day_id" HeaderText="day_id" />
                                <asp:BoundField DataField="time_from" HeaderText="time_from" />
                                <asp:BoundField DataField="time_to" HeaderText="time_to" />
                            </Columns>
                            <HeaderStyle CssClass="gray" />
                            <RowStyle CssClass="blue1 row" />
                            <SelectedRowStyle CssClass="darkblue row" />
                            <EmptyDataRowStyle CssClass="empty" />
                        </asp:GridView>
                    </div>
                </ContentTemplate>
            </asp:UpdatePanel>
            </form>
        </body>
</html>

最佳答案

您在回传中使用 jQuery 而不是在后面的代码中使用“点击”事件是否有原因?如果“刷新”按钮位于第二个 UpdatePanel 中,并且它的唯一目的是更新同一 UpdatePanel 中的 GridView,则您无需指定 AsyncPostBackTrigger。

希望这对您有所帮助。如果没有,示例代码将有助于提供对该问题的更多见解。

关于c# - 多个更新面板的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271845/

相关文章:

c# - MessageQueue.CanWrite 始终返回 true

c# - 使用 EF 和存储过程进行延迟加载

c# - 如何使用 C# 将我的模型放入我的 View 中?

c# - Entity Framework 代码优先在同一个表中设置外键和主键

c# - 是否可以在 VS 2013 中使用 HTML 设计器来构建 MVC Web 应用程序?

c# - WPF中的样式仅当针对文本 block 时,也会自动将相同样式应用于按钮内容

C# 在父类(super class)中调用重写的方法

c# - 为什么协程停止工作/执行

c# - 在 C# asp.net 项目中结合 AngularJS 和 Signalr

entity-framework - 如果数据库被删除,如何使用 CodeFirst 创建 LocalDB?