2016-08-06 5 views
2

У меня есть ASP таблицу, как это:Как настроить ASP.NET Chart DataBound Для SqlDataSource

Я не знаю, как я могу сделать метки для значения появляются вертикальные вместо того, чтобы быть в горизонтальном положении. Я не уверен, что это может быть достигнуто с помощью CSS, поскольку итоговый результат - это изображение.

Chart appearing as image

Все, что я со мной код, который говорит что-то вроде этого: Видел некоторые подобный вопрос здесь: C# chart rotate labels, но для C# и данное решение имеет C# код. Я использую ASP.NET VBScript, а также я не использую какой-либо код, отличный от вышеуказанной надбавки.

Также, пожалуйста, советую мне изменить цвет бара на другой.

Есть ли что-нибудь еще, что я должен проверить?

ответ

2

Определение LabelAngle и Color к значениям, которые вы хотите и отключить 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> 

enter image description here

EDIT: использовать 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)); 
    } 

enter image description here

EDIT: Добавление полный код 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 
+1

Спасибо так много jstreet. И если у вас есть какое-либо предложение или рекомендация сделать каждый отдельный столбец разного цвета, который действительно ценится. Еще раз спасибо –

+0

См. Мой ** EDIT **. – jsanalytics

+0

Прежде всего, большое спасибо. На самом деле я еще не пробовал код. Поскольку SQL Severer 2012 не работает на моем ПК, который является Window 10 и его оригиналом. Он дает это сообщение «Служба инструментария управления Windows (WMI)» не удалась. Теперь я пытаюсь решить эту проблему. –