从ASP.NET图表控件打开一个新窗口

3

我正在使用asp.net图表控件触发JS window.open命令,但没有弹出窗口。

以下是一个.aspx页面的代码,用于构建一个金字塔。

<div>

        <asp:Chart ID="Chart1" runat="server" Height="416px" ImageType="Jpeg" 
        Width="525px" IsMapAreaAttributesEncoded="True" Palette="None" 
        PaletteCustomColors="Navy; DarkBlue; DarkBlue; DarkBlue; DarkBlue; DarkBlue; DarkBlue" 
        TextAntiAliasingQuality="SystemDefault" ImageStorageMode="UseImageLocation">
        <Series>
            <asp:Series BackGradientStyle="DiagonalRight" BackSecondaryColor="Black" 
                BorderColor="Black" ChartType="Pyramid" Color="Transparent" 
                CustomProperties="Pyramid3DRotationAngle=8, PyramidMinPointHeight=60, PyramidPointGap=3, PyramidLabelStyle=Inside" 
                Font="Verdana, 8pt, style=Bold" IsValueShownAsLabel="True" Name="Series1" 
                ShadowColor="Black" LabelForeColor="White" Palette="Grayscale">
                <Points>
                    <asp:DataPoint CustomProperties="PyramidInsideLabelAlignment=Top" 
                        Label="             xxxxxx                               Column-1"
                        ToolTip="1111" YValues="40"/>
                    <asp:DataPoint CustomProperties="PyramidInsideLabelAlignment=Top" 
                        Label="xxxxxx                         Column-2" MapAreaAttributes="" ToolTip="2222"
                        YValues="40" />
                    <asp:DataPoint CustomProperties="PyramidInsideLabelAlignment=Top" 
                        Label="xxxxxx                   Column-3" MapAreaAttributes="" ToolTip="" Url="" 
                        YValues="40" />
                    <asp:DataPoint CustomProperties="PyramidInsideLabelAlignment=Top" 
                        Label="     xxxxxx              Col4" MapAreaAttributes="" ToolTip="" Url="" 
                        YValues="40"  />
                    <asp:DataPoint 
                        Label="  xxxxxx          Col5" MapAreaAttributes="" ToolTip="" Url="" 
                        YValues="40"  />
                    <asp:DataPoint Label="  xxxxxx    Col6" MapAreaAttributes="onClick='javascript:OpenPage();'" ToolTip="" Url="" 
                        YValues="40" />
                    <asp:DataPoint CustomProperties="PyramidInsideLabelAlignment=Bottom" 
                        Label="xx Col7" MapAreaAttributes="" ToolTip="" Url="" YValues="40" />
                </Points>
            </asp:Series>
        </Series>
        <ChartAreas>
            <asp:ChartArea Name="ChartArea1">
                <Area3DStyle Enable3D="True" IsRightAngleAxes="False" Perspective="30" 
                    Inclination="45" PointGapDepth="1000" Rotation="60" />
            </asp:ChartArea>
        </ChartAreas>
    </asp:Chart>    

    </div>

以下是后台代码;
protected void Page_Load(object sender, EventArgs e)
        {
            string statusClicked = string.Empty;
            Series series = new Series("MySeries");
            series.ChartType = SeriesChartType.Pyramid;
            series.BorderWidth = 3;

            DataTable dt = new DataTable();

            dt.Columns.Add("Column-1", typeof(int));
            dt.Columns.Add("Column-2", typeof(int));
            dt.Columns.Add("Column-3.", typeof(int));
            dt.Columns.Add("Column-4", typeof(int));
            dt.Columns.Add("Column-5", typeof(int));
            dt.Columns.Add("Column-6", typeof(int));
            dt.Columns.Add("Column-7", typeof(int));

            dt.Rows.Add(1400, 2240, 7660, 3410, 15, 4, 9);
            int colCount = dt.Columns.Count;
            List<string> xaxis = new List<string>();
            List<double> yaxis = new List<double>();

          Chart1.Series[0].Points[0].MapAreaAttributes = "onclick=\"javascript:window.open('http://www.google.com');\"";

         }

理想情况下,点击图表中的任何系列时,应该打开谷歌链接,并将状态分配为从代码中获得的状态。但是,该代码从未起作用。
它打开的URL类似于;
http://localhost:1450/javascript%3avar+win%3dwindow.open('http%3a%2f%2fwww.google.com%3fstatus%3dTestStatus')%3b

如您所见,状态为“测试状态”,因此应打开的链接是http://www.google.com/?status=TestStatus

注意:labelURL属性仅接受URL。


代码片段1中的window.open语法书写正确吗? - xorpower
1个回答

0

尚未测试,但您可以使用MapAreaAttributes。类似于以下内容;

Chart1.Series[0].Points[i].LabelUrl = "http://www.google.co.in?status=" + dt.Columns[i].ColumnName.ToString();
series.MapAreaAttributes = "target=\"_blank\"";

或者你可以这样做(不带查询字符串);

        foreach (Series series in Chart1.Series)
        {
            series.MapAreaAttributes = "onclick=\"javascript:window.open('http://www.google.com');\"";
        }    

这里有更多关于关键字的信息,可以帮助您传递查询字符串参数。

在您的情况下,您还可以使用MapAreaAttributes来处理DataPointCollection。

Chart1.Series[0].Points[i].MapAreaAttributes = "onclick=\"javascript:window.open('http://www.google.co.in?status=" + dtSample.Columns[4].ColumnName.ToString() + "');\"";

我需要使用window.open函数来打开窗口,因此第一段代码将不适用(即使它能正常工作)。因此我正在使用第二段代码片段进行测试。 - xorpower
第二个代码片段不起作用。是否有其他可实现的解决方案? - xorpower
我不太确定你的代码是如何运作的!请发布完整详细的代码。 - xorpower
我编辑了我的答案并在末尾添加了一段代码。我尝试了这个;没有dtsample,因为我不知道那是什么,所以我用我创建的变量替换了它;它打开了一个传递的变量的新窗口。 - zero7
请指导一下,我卡在这个问题上了。 - xorpower
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接