【问题标题】:How To Customize ASP.NET Chart Databound To SqlDataSource如何自定义 ASP.NET 图表数据绑定到 SqlDataSource
【发布时间】:2016-08-06 17:43:49
【问题描述】:

我有一个这样的 ASP 图表:

我不确定如何使值的标签显示为垂直而不是水平。我不确定这是否可以通过 CSS 实现,因为结果输出是图像。

我所拥有的只是这样的代码: 在这里看到了一些类似的问题:C# chart rotate labels,但它适用于 C#,并且给定的解决方案具有 C# 代码。我正在使用 ASP.NET VBScript,而且除了上述标记之外,我没有使用任何代码。

另外请告诉我如何将条形颜色更改为其他颜色。

还有什么需要检查的吗?

【问题讨论】:

    标签: asp.net charts mschart asp.net-charts


    【解决方案1】:

    LabelAngleColor 定义为您想要的值并禁用SmartLabelStyle,如下面的标记所示:

        <asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1" Height="400px" Width="600px">
            <Series>
                <asp:Series Name="Series1" IsValueShownAsLabel="True" LabelAngle="-90" LabelFormat="0,0" XValueMember="salesordernumber" YValueMembers="subtotal" Color="Red" Font="Microsoft Sans Serif, 12pt">
                    <SmartLabelStyle Enabled="False" />
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisY Maximum="3000">
                        <MajorGrid Enabled="False" />
                        <LabelStyle Format="0,0" />
                    </AxisY>
                    <AxisX>
                        <MajorGrid Enabled="False" />
                    </AxisX>
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>
    

    编辑:使用图表的PreRender 事件为系列中的每个数据点分配不同的颜色。下面的示例分配了随机颜色,但您可以对其进行修改以分配您想要的任何颜色。

        protected void Chart1_PreRender(object sender, EventArgs e)
        {
            Random r = new Random();
    
            foreach (DataPoint dp in Chart1.Series[0].Points)
                dp.Color = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255));
        }
    

    编辑:添加完整的 VB 代码。

    WebForm.aspx:

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>
    
    <%@ Register assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" namespace="System.Web.UI.DataVisualization.Charting" tagprefix="asp" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    
            <asp:Chart ID="Chart1" runat="server" Height="400px" Width="600px" DataSourceID="SqlDataSource1">
                <Series>
                    <asp:Series Name="Series1" IsValueShownAsLabel="True" LabelAngle="-90" LabelFormat="0,0" XValueMember="salesordernumber" YValueMembers="subtotal" Color="Red" Font="Microsoft Sans Serif, 12pt">
                        <SmartLabelStyle Enabled="False" />
                    </asp:Series>
                </Series>
                <ChartAreas>
                    <asp:ChartArea Name="ChartArea1">
                        <AxisY Maximum="3000">
                            <MajorGrid Enabled="False" />
                            <LabelStyle Format="0,0" />
                        </AxisY>
                        <AxisX>
                            <MajorGrid Enabled="False" />
                        </AxisX>
                    </asp:ChartArea>
                </ChartAreas>
            </asp:Chart>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="select * from table;"></asp:SqlDataSource>
    
        </div>
        </form>
    </body>
    </html>
    

    WebForms.aspx.vb:

    Imports System.Web.UI.DataVisualization.Charting
    Imports System.Drawing
    
    Public Class WebForm1
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        End Sub
    
        Protected Sub Chart1_PreRender(sender As Object, e As EventArgs) Handles Chart1.PreRender
            Dim r As New Random
            For Each dp As DataPoint In Chart1.Series(0).Points
                dp.Color = Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))
            Next
        End Sub
    End Class
    

    【讨论】:

    • 非常感谢jstreet。如果您有任何建议或建议使每一列都具有不同的颜色,我们将不胜感激。再次感谢
    • 请看我的编辑
    • 首先,非常感谢。实际上我还没有尝试过代码。因为 SQL Severer 2012 没有在我的 Window 10 及其原始 PC 上运行。它给出此消息“Windows Management Instrumentation (WMI) 服务”失败。现在我正在尝试解决这个问题。
    • 好的,没问题。一旦你开始了,请告诉我。
    • 我已将您的代码转换为 VB 代码,但它给了我这个错误(无法索引 system.drawing.color,因为它没有默认属性)。如果您有任何建议,我将感谢您的努力。这是代码: Protected Sub Chrt1_PreRender(sender As Object, e As EventHandler) Dim r As New Random() For Each dp As DataPoint In Chart1.Series(0).Points Next dp.Color = System.Drawing.Color.FromArgb (r.[Next](0, 255), r.[Next](0, 255), r.[Next](0, 255)) End Sub
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多