發生這種事,只能說自己真的學藝不精,才會被這個小狀況困擾半天,白白浪費不少工時。

話說今天在嘗試Bind資料到Chart上面,但出現了一個怪事,程式大致示意如下:

                    using (SqlConnection cn = new SqlConnection(xxx.ConnectionString))
                    {
                        SqlCommand SQLCmd = cn.CreateCommand();

                        SQLCmd.CommandText = "select A as sString,B as iInteger1,C as iInteger2 from xxxx";

                        cn.Open();

                        chart1.Series[0].YValuesPerPoint = 2;
                        using (SqlDataReader dr = SQLCmd.ExecuteReader())
                        {
                            chart1.Series[0].Points.DataBindXY(dr, "A", dr, "B,C");
                        }
                       
                        ............
                       
                        chart1.Series[0].Legend = chart1.Legends[0].Name;
                        chart1.Series[0].IsValueShownAsLabel = true;
                        chart1.Series[0].Label = "數字1 : #VALY 數字2 : #VALY2";
                        chart1.Series[0].LegendText = "#VALX";

                        chart1.DataBind();

                        SQLCmd.Dispose();
                    }

  這段基本上,就是當User按了按鈕後,就從資料庫撈了三個欄位的資料,A是字串型別,B和C是數字型別,各自將參數Bind到圖表上,但~怪事發生了。

  Series上的數字都出現了,但~Series[0].Legend的文字全部顯示為0?!!(註:Y和Y2的數字都有出現,唯獨X的沒有正常,皆出現0)

  但奇怪的是,若把這段程式移到Page_Load下去運作,卻又是正常的,所有的資料都到位(X的有出現,皆正常出現文字)啊?!!為何用Button去Click就不行?

----------解決的分隔線----------

  其實,在開頭就說明了,這個真的是個小事,只能說自己學藝不精啊啊啊啊~

  只要加這一行就可以了。

  chart1.Series[0].XValueType = ChartValueType.String;

  是的,因為XValueType預設是"AUTO",我只能說這個偵測型別(Auto)還真的難懂啊~

  分享給大家知道囉~:)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鋼琴鈴 的頭像
    鋼琴鈴

    搖搖鋼琴鈴

    鋼琴鈴 發表在 痞客邦 留言(0) 人氣()