0

我正在绘制图表aspx page。该图表被放置在一个<div>. 我需要更新唯一的具体<div>内容,以便我可以chart每 1 秒更新一次,而无需刷新整个页面。

下面是我的代码

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.DataVisualization.Charting" TagPrefix="asp" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

       <div id="chart">
    <asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1" Height="455px" Width="473px" BackColor="DarkGray" BackGradientStyle="Center" BackHatchStyle="BackwardDiagonal" BackImageTransparentColor="0, 192, 192">
        <Series>
            <asp:Series Name="Series1" ChartType="FastPoint" XValueMember="dt" YValueMembers="Id" XValueType="DateTime"></asp:Series>
        </Series>
        <ChartAreas>
            <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
        </ChartAreas>
    </asp:Chart>



<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT top(100) [dt], [Id] FROM [Test4] order by Id desc"></asp:SqlDataSource>

    </div>

</asp:Content>
4

2 回答 2

0

ASP.NET 是一种服务器端语言,这意味着 sqldatasource 控件只会在第一次生成页面时执行服务器端。

您可以通过将图表放在<iframe>标签中并每秒刷新该帧来处理此问题,或者您可以尝试变得复杂并编写一个响应 JSON 数据请求的 Web api,并使用 AJAX 更新 div。

MVC 4 内置了一个非常强大的 Web api,但如果您不是从 MVC 4 项目模板开始,那么您最好只制作一个基于参数处理 JSON 输出的 aspx 页面。

于 2013-10-31T07:42:33.623 回答
0

您应该将图表放在一个updatepanel然后使用timer控件在特定时间间隔内刷新更新面板

这些链接可能对您有所帮助

http://msdn.microsoft.com/en-us/library/cc295400.aspx

http://forums.asp.net/t/1492639.aspx

编辑

更好的方法是使用 jquery ajax 调用。其实施的总体思路是

  1. 创建一个用户控件(.ascx 文件),其中将包含您的图表和加载它的逻辑。

  2. 在任何 cs 文件中定义一个方法,该方法将创建此用户控件的实例(使用Page.LoadControl方法),然后调用它的一些方法来加载它并返回它的面板或占位符,您可以从中生成 html 使用RenderControl方法和此 html 将显示给您div

  3. 这个方法可以在特定的时间间隔内通过jquery调用

于 2013-10-31T07:48:04.343 回答