jquery对话框中的asp.net图表

jquery对话框中的asp.net图表,jquery,asp.net,ajax,updatepanel,modal-dialog,Jquery,Asp.net,Ajax,Updatepanel,Modal Dialog,尝试构建一个较小的图表页面(asp控件对象),然后当我们单击图像时,会弹出一个样式化的jquery模式/对话框,显示图表的较大版本。我正试图通过执行以下操作来实现这一点,但我的模态显示为空白我的“放大”函数背后的代码被调用(当我调试时,弹出窗口被设置为Chart1的值)。我猜我的更新面板错了?完成后,我将把图表移到一个自定义控件上,但是有没有更好的方法可以在不将“ok”返回到“myhide”的情况下执行此操作 .aspx 看起来您将放大的图表加载到一个隐藏范围(#myhide)。因此,它不会仅仅


尝试构建一个较小的图表页面(asp控件对象),然后当我们单击图像时,会弹出一个样式化的jquery模式/对话框,显示图表的较大版本。我正试图通过执行以下操作来实现这一点,但我的模态显示为空白

我的“放大”函数背后的代码被调用(当我调试时,弹出窗口被设置为Chart1的值)。我猜我的更新面板错了?完成后,我将把图表移到一个自定义控件上,但是有没有更好的方法可以在不将“ok”返回到“myhide”的情况下执行此操作

.aspx


看起来您将放大的图表加载到一个隐藏范围(#myhide)。因此,它不会仅仅通过显示模态而变得可见

您可以尝试添加显示#myhide的回调


我无法阅读asp部分,但我假设,如果您直接(通过浏览器)调用图表的url“mypage.aspx?放大=1”,您会得到放大的图表。

我怀疑问题在于,从jQuery AJAX调用到服务器的往返过程没有按照您预期的方式工作。通过jQuery进行的AJAX调用可能不会发送普通更新面板调用会发送的视图状态

尝试将缩略图图表div添加到更新面板,使其成为服务器控件,并使单击成为服务器端事件。可能是这样的:

<form runat="server" id="form1">
   <asp:ScriptManager ID="ScriptManager1" runat="server">
   </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
     <ContentTemplate>                
        <div class="chart-div" runat="server" onclick="EnlargeChart('Chart1')">
            <asp:chart id="Chart1" runat="server"></asp:chart>
        </div> 
        <div id="PopUp">
            <asp:Chart runat="server" ID="PopUpChart"></asp:Chart>
            <span id="myhide" style="display:none"></span>
        </div>
     </ContentTemplate>
    </asp:UpdatePanel>
</form>


我唯一能想到的另一种方法是保持现有状态,但在服务器上创建图表,并将图表图像源作为AJAX响应的一部分发送回

如果我取消隐藏'myhide',在ajax调用之后,它只会显示'OK',因为后面的代码中的'放大()'会清除它。我认为问题在于“PopUpChart”正在更新,但是更新的对象没有显示在对话框中,尽管它位于更新面板中。我正在考虑做一个图像源ajax响应,正如你在文章的后半部分所说的,但我认为我会丢失一些东西,如深入选项和数据点上的工具提示。今晚我一定会把你的第一个建议付诸实施。谢谢
<script type="text/jscript">
    $(document).ready(function () {
        $('#PopUp').hide();  //hide on startup
    });

    function JScript_EnlargeChart(x) { //ajax call to create a dialog box to enlarge a given chart
        $('#myhide').load('mypage.aspx?Enlarge=' + x); //refresh

        $('#PopUp').modal({  //do popup
            title: 'Enlarged Chart',
            height: 400,
            width: 700,
            buttons: {
                'Close': function (win) { win.closeModal(); }
            }
        });
    };
</script>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        

    If Not IsNothing(Request.QueryString("Enlarge")) Then
        Response.Write(Enlarge(Request.QueryString("Enlarge")))
        Response.Flush()
        Response.End()
    Else
        GenerateCharts()
    End If

End Sub

Function Enlarge(ByVal chartid As String) As String
    If chartid = "Chart1" Then
        PopUpChart = Chart1
        PopUpChart.Width = 412
        PopUpChart.Height = 296
        UpdatePanel1.Update()
    ElseIf chartid = "Chart2" Then
        PopUpChart = Chart2
        UpdatePanel1.Update()
    End If
    Return "OK"
End Function
$('#myhide').load('mypage.aspx?Enlarge=' + x, function(){ $('#myhide').show(); }); 
<form runat="server" id="form1">
   <asp:ScriptManager ID="ScriptManager1" runat="server">
   </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
     <ContentTemplate>                
        <div class="chart-div" runat="server" onclick="EnlargeChart('Chart1')">
            <asp:chart id="Chart1" runat="server"></asp:chart>
        </div> 
        <div id="PopUp">
            <asp:Chart runat="server" ID="PopUpChart"></asp:Chart>
            <span id="myhide" style="display:none"></span>
        </div>
     </ContentTemplate>
    </asp:UpdatePanel>
</form>