1

Telerik をダウンロードしたばかりですが、インターネットでヘルプが見つかりません。派手なレポートを生成できるようにしたいのですが、Telerik が適しているようです。そうは言っても、レポートを作成するためにすべてのウィザードやジャンクを使用したくはありません。レポートの読み込み時に使用できる「report_load」機能はありませんか。接続文字列を構成可能にする必要があり、レポートを生成する値をユーザーに入力してもらいます。

レポートを生成するコードは次のとおりです。

private void GenerateReport()
    {
        DBaseConn.Open();
        SqlCommand = new SqlCommand("SELECT Gate, Weight, Date_Created FROM Backrib_Manifest " +
                                    "WHERE Date_Created >= '" + fromddate + "'" + 
                                    "AND Date_Created <= '" + todate + "'", DBaseConn);
        DataReader = SqlCommand.ExecuteReader();

        while (DataReader.Read())
        {
            switch (Convert.ToInt32(DataReader["Gate"]))
            {
                case 1:
                    gatecount[0]++;
                    gate1weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 2:
                    gatecount[1]++;
                    gate2weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 3:
                    gatecount[2]++;
                    gate3weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 4:
                    gatecount[3]++;
                    gate4weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 5:
                    gatecount[4]++;
                    gate5weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 6:
                    gatecount[5]++;
                    gate6weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 7:
                    gatecount[6]++;
                    gate7weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 8:
                    gatecount[7]++;
                    gate8weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                case 0:
                    gatecount[8]++;
                    gate0weight += double.Parse(DataReader["Weight"].ToString());
                    break;
                default:
                    break;
            }
        }
        DBaseConn.Close();

        int totalcount = gatecount[0] + gatecount[1] + gatecount[2] + gatecount[3] + gatecount[4] +
                         gatecount[5] + gatecount[6] + gatecount[7] + gatecount[8];

        lblCount1.Text = gatecount[0].ToString();
        lblCount2.Text = gatecount[1].ToString();
        lblCount3.Text = gatecount[2].ToString();
        lblCount4.Text = gatecount[3].ToString();
        lblCount5.Text = gatecount[4].ToString();
        lblCount6.Text = gatecount[5].ToString();
        lblCount7.Text = gatecount[6].ToString();
        lblCount8.Text = gatecount[7].ToString();
        //lblCount0.Text = gatecount[8].ToString();
        if (totalcount != 0)
        {
            lblPct1.Text = (gatecount[0] / totalcount).ToString("P2");
            lblPct2.Text = (gatecount[1] / totalcount).ToString("P2");
            lblPct3.Text = (gatecount[2] / totalcount).ToString("P2");
            lblPct4.Text = (gatecount[3] / totalcount).ToString("P2");
            lblPct5.Text = (gatecount[4] / totalcount).ToString("P2");
            lblPct6.Text = (gatecount[5] / totalcount).ToString("P2");
            lblPct7.Text = (gatecount[6] / totalcount).ToString("P2");
            lblPct8.Text = (gatecount[7] / totalcount).ToString("P2");
            //lblPct0.Text = (gatecount[8] / totalcount).ToString("P2");
        }

        lblWeight1.Text = (gate1weight / gatecount[0]).ToString();
        lblWeight2.Text = (gate2weight / gatecount[1]).ToString();
        lblWeight3.Text = (gate3weight / gatecount[2]).ToString();
        lblWeight4.Text = (gate4weight / gatecount[3]).ToString();
        lblWeight5.Text = (gate5weight / gatecount[4]).ToString();
        lblWeight6.Text = (gate6weight / gatecount[5]).ToString();
        lblWeight7.Text = (gate7weight / gatecount[6]).ToString();
        lblWeight8.Text = (gate8weight / gatecount[7]).ToString();
        //lblWeight0.Text = (gate0weight / gatecount[8]).ToString();
    }

レポート自体でこれを行う方法はありますか? もちろん、実際にはレポートの定義された場所に値を配置します。

4

1 に答える 1

0

私がすることは、レポート クラスのプロパティ (またはプロパティ) を作成し、NeedDataSource ("report_load"について尋ねています)イベントハンドラー。そこでは、これらの内部プロパティ値を使用して、レポートに値をバインドまたは設定するだけです。このように、接続文字列はレポート クラスとは無関係です。プロパティを設定するだけで (たとえば、DataSource を考えてください)、レポート クラスはそのコントロール値を内部的に設定する責任を負います。

注: Telerik レポートには 2 つのクラスが関連付けられています。すべてのレポート コントロールなどを持つデザイナー部分クラスと、レポート クラス (カスタム サブクラス) 自体。後者は、NeedDataSource が移動する場所です。

于 2012-05-23T21:41:05.310 に答える