0

我在我的 asp.net 应用程序中使用 devexpress 调度程序。我的调度程序包含日期导航器和视图导航器(主要是日视图、周视图和月视图)。我的调度程序在用户控件中。我在我的 aspx 页面中使用此用户控件。在此页面中,我有一个标签lblRecords,显示调度程序中显示的记录数。当我更改视图(默认视图是月视图)时,标签不会更新。下面是一些显示我的问题的图像。

在月视图中加载页面时 139 条记录 在此处输入图像描述

在这种情况下,我已将视图更改为日视图,并且只有 1 条记录。但标签仍然显示 139。

在此处输入图像描述

页面

    <asp:UpdatePanel ID="updCalendar" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <div class="leftarea" style="height: 400px">
                        <div class="comn_captn calender_left">
                            Calender View<a href="#"></a></div>
                                            <table border="0" cellpadding="5" cellspacing="5" width="100%">

                            <tr>
                                <td style="vertical-align: top">
                                    <label>
                                        <strong>
                                            <asp:Label ID="lblRecords" runat="server"></asp:Label></strong></label>
                                </td>
                            </tr>
                            <tr>
                                <td style="vertical-align: top">
                                    <hr />
                                </td>
                            </tr>
    ....

                            </table>

                    </div>
                    <div class="rightarea">
                        <div class="comn_captn">
                            &nbsp;
                        </div>
                        <div class="comonform_elements">
                            <uc1:CalendarView ID="calBMJob" runat="server" />
                        </div>
                    </div>
       </ContentTemplate>
   </asp:UpdatePanel>

在此代码中,calBMJob是包含调度程序的用户控件。

请帮我解决这个问题。我在 SO 中尝试了许多解决方案,但没有任何效果。任何解决方法也将不胜感激。

4

1 回答 1

1

很有可能,当您更改视图时,您的日程安排控件上会发生回调。此回调不包含标签,因此如果您在服务器上更新标签文本,则更改将在客户端上不可见。有几种方法可以让它发挥作用。

1:(可能更多工作)将所有内容放入 ASPxCallbackPanel 并设置所有控件开始回调客户端事件以取消事件,然后调用 CallbackPanel.PerformCallback(args) 方法。

2:(可能工作较少)使用来自JSProperty的值更新调度控件的客户端EndCallback方法中的标签,如下所示:

//javascript
function CalendarView_EndCallback(s,e){
   if(s.cp_labelText != undefined)
   {
      //change label to ASPxLabel and set a JSProperty on schedule control to do this.
      lblRecords.SetText(s.cp_labelText);
   }
}

这意味着您需要 UserControl 上的一个属性来设置创建控件的页面上的 EndCallback 方法,并需要一个属性来访问 JSProperty 或具有 JSProperty 的控件。

于 2013-10-16T16:38:12.953 回答