子控件不呈现

时间:2012-12-02 22:19:34

标签: c# asp.net custom-server-controls

我创建了一个自定义复合控件,其中包含来自此项目https://googlevisnet.codeplex.com/的子控件(它是我为各种时间检查过的谷歌图表的.NET库)。我正在使用VisualStudio 2012和一个简单的C#类库。

我重写CreateChildControl,如下所示:

protected override void CreateChildControls()
    {
        Controls.Clear();

        //create the pie control
        GenderChart = new GVPieChart();
        GenderChart.Width = PieChartDimentions[0];
        GenderChart.Height = PieChartDimentions[1];
        GenderChart.ChartData(GenderDistributionTable);

        //create the bar control
        AgeChart = new GVColumnChart();
        AgeChart.Width = BarChartDimentions[0];
        AgeChart.Height = BarChartDimentions[1];
        AgeChart.ChartData(AgeDistributionTable);

        this.Controls.Add(GenderChart);
        this.Controls.Add(AgeChart);
    }

并覆盖Render,如下所示:

AgeChart.RenderControl(output);

当我在页面上运行代码时,一切似乎都有效,我可以告诉控件正确地渲染了区域(我可以看到具有特定大小的div),但是我没有看到图表本身。

奇怪的是,有一段时间它正在工作,然后再次停止,而我没有对代码进行任何更改。

任何想法?

1 个答案:

答案 0 :(得分:2)

显然解决问题的方法就像添加控件的ID一样愚蠢。     protected override void CreateChildControls()         {             Controls.Clear();

        //create the pie control
        GenderChart = new GVPieChart();
        GenderChart.ID = "genderChar";
        GenderChart.Width = PieChartDimentions[0];
        GenderChart.Height = PieChartDimentions[1];
        GenderChart.ChartData(GenderDistributionTable);

        ////create the bar control
        AgeChart = new GVColumnChart();
        AgeChart.ID = "ageChart";
        AgeChart.Width = BarChartDimentions[0];
        AgeChart.Height = BarChartDimentions[1];
        AgeChart.ChartData(AgeDistributionTable);

        this.Controls.Add(GenderChart);
        this.Controls.Add(AgeChart);
    }

我不知道我是怎么忘记像ID一样重要的东西。我们的思想在某些时候停止思考简单。

干杯:)

相关问题