Я пытаюсь установить 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.Я не получаю никакой ошибки, приборная панель показывает, но без каких-либо данных.