Событие DataLoading никогда не запускается - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь установить DashboardObjectDataSource для своей панели мониторинга, и я хотел бы перехватить событие DataLoading, чтобы указать данные в зависимости от выбранной панели мониторинга.Моя проблема в том, что событие DataLoading никогда не запускается.

Я пытался подписаться на это событие так:

public DataSourceInMemoryStorage CreateDataSourceStorage()
    {
        DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage();

        DashboardObjectDataSource data = new DashboardObjectDataSource();
        data.DataSource = typeof(Data);
        data.Name = "Object Data Source";
        dataSourceStorage.RegisterDataSource("dataSourceObject", data.SaveToXml());
}

public void ConfigureServices(IServiceCollection services)
    {
        services
            .AddMvc()
            .AddDefaultDashboardController(configurator => {
                configurator.SetDashboardStorage(new DataBaseEditaleDashboardStorage(Configuration.GetConnectionString("DashboardStorageConnection")));
                configurator.SetDataSourceStorage(CreateDataSourceStorage());
                configurator.AllowExecutingCustomSql = true;
            });

        services.AddDevExpressControls(settings => settings.Resources = ResourcesType.ThirdParty | ResourcesType.DevExtreme);

        DashboardConfigurator.PassCredentials = false;

        DashboardConfigurator.Default.DataLoading += Default_DataLoading;
    }

private static void Default_DataLoading(object sender, DataLoadingWebEventArgs e)
    {
        if (e.DataSourceName == "Object Data Source")
        {
            e.Data = Data.GetData();
        }
    }

public class Data
{
    public static DataTable GetData()
    {
        DataTable dt = new DataTable();

        string query = "select TOP 1000 * from MyTable";

        SqlConnection conn = new SqlConnection("MyConnectionString");
        SqlCommand cmd = new SqlCommand(query, conn);
        conn.Open();

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        conn.Close();
        da.Dispose();

        return dt;
    }
}

Но мне никогда не удавалось войти в метод Default_DataLoading.Я не получаю никакой ошибки, приборная панель показывает, но без каких-либо данных.

1 Ответ

0 голосов
/ 27 мая 2019

Похоже, что экземпляр DashboardConfigurator.Default вызывает проблему.Вместо этого определите обработчик события DataLoading в методе AddDefaultDashboardController:

                configurator.SetDataSourceStorage(CreateDataSourceStorage());
                configurator.AllowExecutingCustomSql = true;
                configurator.DataLoading += (s, e) => {
                    if (e.DataSourceName == "Object Data Source")
                    {
                        e.Data = Data.GetData();
                    }
                };

Кроме того, проверьте, содержит ли макет панели мониторинга источник данных с именем, указанным в обработчике событий DataLoading (" Источник данных объекта ").Если ваша панель мониторинга не имеет источника данных, вам нужно будет создать его с помощью параметра Создать новый источник данных в веб-дизайнере.

На всякий случай: создан пример приложения Web Dashboard.Использование галереи шаблонов DevExpress (см. Создание приложения панели мониторинга ASP.NET MVC ) включает регистрацию источника данных объекта, которая заполняет элементы панели данных данными после добавления соответствующего источника данных в режиме разработки.

...