ASP.NET Chart Control - как автоматически построить область графика с пустым? - PullRequest
4 голосов
/ 23 августа 2011

Может показаться странным, что я хочу построить свой график с пустыми рядами.

Но вот сделка. Моя диаграмма выводит данные из базы данных между двумя датами, которые предоставляются для хранимой процедуры.

Такой результат:

2011-08-05 - 37,5
2011-08-11 - 20,1
2011-08-16 - 8,0
2011-08-17 - 15,7

Ось X построена вместе с датами. И ось Y построена с числами (десятичными).

Нет проблем построить их.

Но я хочу вот так:

2011-08-01 - 0
2011-08-02 - 0
^
etc.
v
2011-08-05 - 37,5
2011-08-06 - 20,1
2011-08-07 - 8,0
2011-08-08 - 15,7
^
etc.
v
2011-08-30 - 0
2011-08-31 - 0

Кто-нибудь может дать мне подсказку?

Мой код выглядит так:

        <asp:Chart ID="Chart_NormalRegistrations" runat="server" Height="650px" Width="975px" 
            DataSourceID="SqlDataSource1" Palette="Bright">
            <Series>
                <asp:Series Name="Series1" XValueMember="Dato" XValueType="DateTime" ChartArea="" 
                    YValueMembers="Total" YValueType="Double" YValuesPerPoint="1">
                </asp:Series>
            </Series>
            <ChartAreas>
                <asp:ChartArea Name="ChartArea1">
                    <AxisY Title="Tid" Interval="5">
                    </AxisY>
                    <AxisX Title="Dage" Interval="1">
                    </AxisX>
                    <Area3DStyle Enable3D="True" />
                </asp:ChartArea>
            </ChartAreas>
        </asp:Chart>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString=" //connectionstring" 
            SelectCommand="stored_proc_regs" SelectCommandType="StoredProcedure">
            <SelectParameters>
                <asp:Parameter DefaultValue="2011-08-01" Name="from" Type="DateTime" />
                <asp:Parameter DefaultValue="2011-09-01" Name="to" Type="DateTime" />
            </SelectParameters>
        </asp:SqlDataSource>

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Другим решением этой проблемы является вставка пустых точек на график. Вам нужно будет использовать DataManipulator Class. Тем не менее, необходимо установить максимальные минимальные значения для оси X, хотя. например:

Chart_NormalRegistration.Series["Series1"]["EmptyPointValue"] = 0;

Chart_NormalRegistration.DataManipulator.InsertEmptyPoints(1, IntervalType.Days, 
            1, IntervalType.Days, "Series1");
1 голос
/ 23 августа 2011
<AxisX Title="Dage" Interval="1">

В этом теге вы можете установить явные значения Минимум и Максимум для оси, и диаграмма будет учитывать их. Но решить, что установить, может быть немного сложно.

Если ваш сохраненный процесс возвращает DateTime s (или эквивалент в sql), диаграмма будет эффективно преобразовывать их в double s с помощью OLE Automation Conversion , что достаточно близко к числу дней после полуночи 30 декабря 1899 года. Если вы (как это выглядит) просто используете разметку, вам придется вычислять ее вручную для нужных вам дат и указывать эти числа, поскольку я не думаю, что разметка диаграммы будет преобразована для вас.

OADate для 2011-08-01 - 40756, а чтобы добавить день, просто добавьте 1, поэтому 31-е - 40786. Попробуйте это и посмотрите, работает ли это - если это так, вы можете подумать, хотите ли вы упростить определение этого, начав выполнять некоторую работу с выделенным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...