Ajax UpdatePanel无法正常工作?

时间:2014-05-28 09:13:38

标签: asp.net ajax reportviewer

我是Ajax的新手,对阅读它以及如何刷新页面区域而不是整个页面给我留下了深刻的印象。我认为在阅读它时这样做很容易,但是我坚持在一个区域。

我的页面上有一个使用ScriptManager的报表查看器,我有一个日历控件,当我点击一天时需要刷新以将其放入文本框中。

报表查看器在页面上加载时需要传递一个参数,但只能在从组合框中选择一些内容后得到它

所以这就是我到目前为止所做的:

<li>
    <asp:UpdatePanel runat="server" ID="updateDOI">
        <ContentTemplate>

             <input id="txt_DateOfInterview" type="Date" class="aclass" runat="server" />

                  <asp:ImageButton runat="server" ImageUrl="~/Images/Calender.png" ID="calendericonDOI" CssClass="calendericonDOI ClanderDOI" OnClick="calendericonDOI_Click"></asp:ImageButton>

                  <asp:Calendar runat="server" ID="ClanderDOI" CssClass="ClanderDOI" OnSelectionChanged="ClanderDOI_SelectionChanged" BorderColor="#6a3d98" OnVisibleMonthChanged="ClanderDOI_VisibleMonthChanged">
                       <TitleStyle BackColor="Orange" />
                  </asp:Calendar>

        </ContentTemplate>
     </asp:UpdatePanel>

正如您所看到的,我在日历周围包裹了一个UpdatePanel,并且输入框将填充选定的日期

然后在报告查看器中我也做了同样的事情:

<asp:UpdatePanel runat="server" ID="UpdatePanel1">
      <ContentTemplate>
           <rsweb:ReportViewer ID="rvSickness" runat="server" BackColor="#6e4594" Font-Names="Arial" Font-Size="8pt" Height="100%" ProcessingMode="Remote" WaitMessageFont-Names="Arial" WaitMessageFont-Size="14pt" Width="450px" ShowCredentialPrompts="False" ShowParameterPrompts="False" ShowPromptAreaButton="True" ShowToolBar="true" ShowFindControls="False" ToolBarItemBorderColor="#FF9900" ToolBarItemHoverBackColor="#FF9900" ForeColor="White">
                   <ServerReport ReportServerUrl="" />
                                </rsweb:ReportViewer>
      </ContentTemplate>
 </asp:UpdatePanel>

但我不明白,当我做任何事情时,ReportViewer仍然令人耳目一新。

我的问题是,当我从日历控件中选择某些内容时,为什么报表查看器会更新?是因为它尚未传递参数还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

你可以做的是采取两个更新面板

在我使用DropDownList的第一个UpdatePanel中(这里我拿了一些示例下拉列表项)

<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:DropDownList ID="DropDownList1" ClientIDMode="AutoID" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
                <asp:ListItem>one</asp:ListItem>
                <asp:ListItem>two</asp:ListItem>
                <asp:ListItem>three</asp:ListItem>
                <asp:ListItem>four</asp:ListItem>
            </asp:DropDownList>
        </ContentTemplate>
    </asp:UpdatePanel>

我使用ReportViewer的第二个更新面板

<asp:UpdatePanel runat="server" ID="UpdatePanel2" UpdateMode="Conditional">
    <ContentTemplate>
        <rsweb:ReportViewer ID="rvSickness" runat="server" BackColor="#6e4594" Font-Names="Arial" Font-Size="8pt" Height="100%" ProcessingMode="Remote" WaitMessageFont-Names="Arial" WaitMessageFont-Size="14pt" Width="450px" ShowCredentialPrompts="False" ShowParameterPrompts="False" ShowPromptAreaButton="True" ShowToolBar="true" ShowFindControls="False" ToolBarItemBorderColor="#FF9900" ToolBarItemHoverBackColor="#FF9900" ForeColor="White">
         <ServerReport ReportServerUrl="" />
        </rsweb:ReportViewer>
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
    </Triggers>
</asp:UpdatePanel>

现在在代码背后,你可以在DropDownList1_SelectedIndexChanged事件上将id传递给ReportViewer

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //your code here
        }

注意:我没有在此答案中记录您的日历和其他控件,因为您只想在从DropDownList中选择项目时更新ReportViewer