0

棒グラフを描くと、一部のアイテムがX軸に正しくプロットされませんが、同等のY軸は問題ありません。

私のユーザーコントロールには次のコードがあります、

<asp:Chart ID="Chart1" runat="server" Width="850px" Height="600px">
    <Series>
        <asp:series Name="Series1"></asp:series>
    </Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1">
        </asp:ChartArea>
    </ChartAreas>
</asp:Chart>

データテーブルに入力するコード、

protected DataTable GetGroupExperienceData(PickerEntity pickerEntity)
{
    DataTable table;
    table = new DataTable();

    table.Columns.Add("Participant", typeof(string));
    table.Columns.Add("Experience", typeof(Int32));
    table.Columns.Add("Question", typeof(string));

    DataRow row;                    

    if (collListItems2.Count > 0 && collListItems2 != null)
    {
        for (int i = 0; i < collListItems2.Count; i++)
        {
            row = table.NewRow();

            row["Participant"] = user.Name;

            SPFieldLookupValue lpkFieldQName = new SPFieldLookupValue(itemRep["SurveyQuestion"].ToString());
            string lkpQNameVal = lpkFieldQName.LookupValue;

            row["Question"] = lkpQNameVal;

            SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("(Error)", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ">" + row["Question"].ToString(), "");

            if (itemRep["Experience"] !=null)
            {
                row["Experience"] = itemRep["Experience"];
            }
            else
            {
                row["Experience"] = Convert.ToInt32("0");
            }

            table.Rows.Add(row);
        }
    }

    return dt;
}

最後にチャート描画コード、

protected void DrawExperienceChart(DataTable dt)
{
    Chart1.Series["Series1"].ChartType = SeriesChartType.Bar;
    Chart1.Series["Series1"]["DrawingStyle"] = "Emboss";
    Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = false;
    Chart1.Series["Series1"].IsValueShownAsLabel = true;
    Chart1.DataSource = dt;
    Chart1.Series["Series1"].XValueMember = "Question";
    Chart1.Series["Series1"].YValueMembers = "Experience";
    Chart1.DataBind();
}

これらの関数はすべて、ボタンクリックから呼び出されます。

protected void btnGetReport_Click(object sender, EventArgs e)
{
    DataTable dt =  GetGroupExperienceData(pickerEntity);

    DrawExperienceChart(dt);   
}

これが出力です。Xasixには多くの「質問」データがありませんが、同等の「経験」がY軸にうまくプロットされています。

ここに画像の説明を入力してください

データがデータテーブルに入っていないのではないかと思いましたが、データテーブルには、を使って見ることができるデータがありますSPDiagnosticsService.Local.WriteTrace()

ここに画像の説明を入力してください

4

1 に答える 1

0

簡単でした。すべてのラベルを表示するには有効にする必要がある設定があり、それ以外の場合、チャート コントロールはほとんどのラベルを非表示にします。

Chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1;
于 2013-03-21T16:03:23.663 に答える