问题CallBackPanel's的PerformCallback渲染空白图表,如果一个图表被添加到面板'

本文关键字:一个 添加 PerformCallback 问题 CallBackPanel 空白 如果 | 更新日期: 2023-09-27 18:12:41

我遇到了一个WebForms页面的问题,如果我将数据绑定到DevExpress WebChartControl并将其添加到Page_Load中的DevExpress ASPxCallBackPanel,当我通过DropDownListonChange事件调用它时,面板的CallBack呈现空白图表。

如果我不将图表添加到Page_Load中的面板,CallBack按预期工作,我可以根据从DropDownList中选择的选择将不同的数据集重新绑定到图表。

后面的相关代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<CompanyRecord> companiesList = new List<CompanyRecord>();
        List<DataWeekRecord> dataList = new List<DataWeekRecord>();
        //Data binding of various controls
        WebChartControl testChart_2 = new WebChartControl();
        testChart_2.Series.Add(new DevExpress.XtraCharts.Series("Test Series", DevExpress.XtraCharts.ViewType.Line));
        testChart_2.Series[0].ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime;
        testChart_2.Series[0].ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
        testChart_2.Series[0].DataSource = dataList;
        testChart_2.Series[0].ArgumentDataMember = "Week";
        testChart_2.Series[0].ValueDataMembers.AddRange(new string[] { "PerformanceData" });
        testChart_2.Height = panel_bottom.Height;
        testChart_2.Width = panel_bottom.Width;

        //
        //Issue with blank chart rendering on calls to PerformCallback only happens if we add  testChart_2 
        //panel_bottom.Controls.Add(testChart_2);
        //

        customersDropDown.Attributes.Add("onChange", "panel_bottom.PerformCallback();");
    }

面板CallBack后面的方法:

  protected void panel_bottom_callBack(object sender, CallbackEventArgsBase e)
{
    string customer_id = customersDropDown.SelectedValue;
    List<DataWeekRecord> data = new List<DataWeekRecord>();
    //Get new data based on customersDropDown.SelectedValue
    WebChartControl wbc = new WebChartControl();
    wbc.Series.Add(new DevExpress.XtraCharts.Series("Test Series", DevExpress.XtraCharts.ViewType.Line));
    wbc.Series[0].ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime;
    wbc.Series[0].ValueScaleType = DevExpress.XtraCharts.ScaleType.Numerical;
    wbc.Series[0].DataSource = data;
    wbc.Series[0].ArgumentDataMember = "Week";
    wbc.Series[0].ValueDataMembers.AddRange(new string[] { "PerformanceData" });
    wbc.Width = ASPxCallbackPanel.Width;
    wbc.Height = ASPxCallbackPanel.Height;
    ASPxCallbackPanel cbp = (ASPxCallbackPanel)sender;
    cbp.Controls.Add(wbc);
}

我基本上修改了我在页面https://documentation.devexpress.com/#AspNet/CustomDocument7555上找到的步骤,但不是将panel.PerformCallback()与按钮的Click事件相关联,而是将其与DropDownListonChange客户端事件相关联。

最后,我应该知道我没有太多的前端工作经验。

问题CallBackPanel's的PerformCallback渲染空白图表,如果一个图表被添加到面板'

尝试调用wbc.DataBind()后,您指定了数据源的图表,然后在panel_bottom_callBack处理程序将其添加到cbp回调面板。此外,看起来testChart_2在Page_Load中也缺少DataBind()调用。