Если вы разрабатываете пользовательский элемент управления на основе нескольких элементов управления DevExpress, которые должны иметь возможность взаимодействовать друг с другом, и у вас будет более одного экземпляра пользовательского элемента управления на данной странице, тогда лучше всего использовать DevExpress 'window.aspxGetControlCollection () с ClientID элемента управления DevExpress следующим образом:
window.aspxGetControlCollection().elements[clientID];
Недостатком этого является то, что вам, как правило, приходится создавать обработчики событий на стороне клиента в коде, где у вас есть простой доступ к клиентским идентификаторам элемента управления DevExpress, например, так.
ASPxGridView.ClientSideEvents.EndCallback = "function(s,e) { window.aspxGetControlCollection().elements['" + SomeOtherDevExpressControl.ClientID + "'].PerformCallback('callbackArg'); }";
Либо это, либо создайте объект JS для обработки ваших действий на стороне клиента и переопределите метод рендеринга, чтобы добавить некоторый скрипт для создания этого экземпляра с необходимыми идентификаторами клиента.
JS Экземпляр:
window.ClientControl = function(SomeOtherDevExpressControlClientId)
{
this.SomeOtherDevExpressControlClientId = SomeOtherDevExpressControlClientId;
this.SomeOtherDevExpressControl() = function(){ return window.aspxGetControlCollection().elements[this.SomeOtherDevExpressControlClientId]; }
this.GridEndCallback = function(s,e) { this.SomeOtherDevExpressControl().PerformCallback('callbackArg'); }
}
Переопределение рендера:
proteced override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.WriteLine();
writer.WriteBeginTag("script");
writer.WriteAttribute("type", "text/javascript");
writer.Write(">");
writer.WriteLine("window['" + UserControl.ClientInstanceName+ "'] = new ClientControl('" + SomeOtherDevExpressControl.ClientID + "');");
writer.WriteEndTag("script");
}
Со вторым методом есть предположение, что вы добавили атрибут публичной строки ClientInstanceName в свой пользовательский элемент управления и задали это значение в разметке.