0

我创建了一个自定义复合控件,其中包含来自该项目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);
    }

并像这样覆盖渲染:

AgeChart.RenderControl(output);

当我在页面上运行代码时,一切似乎都正常工作,并且我可以告诉控件正确呈现了该区域(我可以看到具有特定大小的 div),但是我看不到图表本身。

奇怪的是,它在那里工作了一会儿,然后又停止了,而我没有对代码进行任何更改。

有任何想法吗?

4

1 回答 1

2

显然,解决问题的方法就像为控件添加 ID 一样愚蠢。受保护的覆盖无效 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 这样重要的东西。我们的头脑在某些时候停止思考简单。

干杯:)

于 2012-12-03T07:49:57.040 回答