У меня есть пара разных sqldatasources на странице asp.net, которые все запускают один и тот же обработчик событий.Причина этого заключается в том, что один и тот же код в обработчике событий может быть применен ко всем источникам данных (которые по сути генерируют фильтры в запросах динамически).Тем не менее, теперь у меня есть другой источник данных, который все еще может использовать большую часть кода, но должен обрабатываться немного иначе.Я мог бы сделать это очень легко, если бы мог сослаться на идентификатор источника данных, который запускает событие (которое я пробовал), но это не представляется возможным.Вот что я изначально пытался сделать:
protected void sdsTable_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
SqlDataSource sds = sender as SqlDataSource;
string dsID = sds == null ? "" : sds.ID;
if (dsID == "aDataSourceID")
{
//do this
}
else
{
//do that
}
//more code
}
Это не сработало, потому что отправитель имеет тип SqlDataSourceView и пытается преобразовать отправителя, так как SqlDataSource возвращает ноль.Итак, я изменил его на SqlDataSourceView:
protected void sdsTable_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
SqlDataSourceView sds = sender as SqlDataSourceView;
string dsID = sds == null ? "" : sds.Name; //Tried Name property because ID isn't available
if (dsID == "aDataSourceID")
{
//do this
}
else
{
//do that
}
//more code
}
Но это все равно не работает.SqlDataSourceView, по-видимому, не имеет доступного свойства, которое дает datasourceID источника данных, который в данный момент запускает событие.Есть свойство SqlDataSourceView.Name, но это нечто другое.Кто-нибудь знает, возможно ли получить идентификатор источника данных, запускающего событие Selecting при обработке этого события?Если да, можете ли вы привести пример, как это сделать?
Спасибо!