2013-06-24 2 views
0

У меня есть ComboBox, привязанный к объекту, который также привязан к DataGrid. Когда я изменяю выбор ComboBox или SelectedItem в DataGrid, запускается событие SelecionChanged в ComboBox.Как получить исходный компонент триггера DataGrid SelectionChanged?

Есть ли способ узнать, какой компонент (DataGrid или ComboBox) вызвал событие?

+0

События имеют «отправитель» и «e», связанные с ними. «Отправитель» - это то, что скажет вам, кто вызвал событие. – Brian

+0

Я также пытался использовать отправителя, но тип отправителя всегда является ComboBox. Не знаю, почему. И я также попытался использовать событие DataGrid SelectionChanged, чтобы установить флаг для обработки в событии ComboBox SelectionChanged, но DataGrid SelectionChanged запускается после ComboBox SelectionChanged. –

ответ

0

Если бы я был вами, я бы поставил точки останова на контрольные точки SelectedItem или SelectedChanged и попытался запустить решение в режиме отладки и посмотреть места, где была удалена первая точка останова;) Callstack также поможет вам ,

0

Предполагая, что вы оба подключены к источнику данных объекта. Вы можете просто создать отдельный источник данных для своего раскрывающегося списка, который использует тот же метод SelectMethod. Таким образом, они оба обновляются с теми же данными после обратной передачи.

В противном случае используйте javascript для события onchange в раскрывающемся списке и установите скрытое поле, если оно было изменено или нет. Затем проверьте это значение, чтобы увидеть, было ли это от ниспадающего или нет.

<asp:DropDownList runat="server" ID="drpOption"onchange="javascript:OptionChanged();"></asp:DropDownList> 

function OptionChanged() { 
    $('#hdnField').val = 'true'; 

    return false; 
} 
1

Для того, чтобы ComboBox мог отправлять сообщения обратно, я бы предположил, что он установлен в AutoPostBack? Если это вообще влияет на данные в GridView, тогда все события будут срабатывать. Когда запускается полная обратная передача (например, когда ComboBox установлен в AutoPostBack = true), каждое событие с новыми данными запускается.

Вы должны изучить жизненный цикл управления: http://msdn.microsoft.com/en-us/library/aa719775(v=vs.71).aspx (это только документ msdn, это не здорово, но это хорошая отправная точка).

... Вы также должны попытаться опубликовать код со своим вопросом :) Немного двусмысленно, что вы делаете. С каким объектом они связаны? Или это тот же набор данных, который связан как с GridView, так и с ComboBox?

EDIT: Это сообщение может немного помочь: Two types of postback events

0

U может сделать выбора события изменения обоих DataGrid и выпадающего списка проверить, применяя BreakPoint, какая часть выполняет первый .. !!

Смежные вопросы