Удалить строку Datagrid, нажав часть кнопки этой строки в столбце «Удалить»?

Я хочу удалить строку моей сетки данных, когда кто-то нажимает часть кнопки этой строки, расположенную ниже «Удалить столбец». Я пробовал много разных способов, одним из которых было

<mx:DataGrid id="userGrid" dataProvider="{userGridData}" width="800" height="500" itemClick="userGrid_itemClickHandler(event)" creationComplete="userGrid_creationCompleteHandler(event)">
        <mx:columns>
            <mx:DataGridColumn headerText="ID" dataField="user_id" />

            <mx:DataGridColumn headerText="Email" dataField="user_email"/>

            <mx:DataGridColumn headerText="Delete" itemRenderer="ev.renderers.UserGridDelete" id="deleteCol"/>
            <mx:DataGridColumn headerText="Edit" itemRenderer="ev.renderers.UserGridEditRender"/>

        </mx:columns>
    </mx:DataGrid>

В элементе render ev.renderers.UserGridEditRender есть список кнопок удаления для события клика, который он в основном делает userGridData.removeItemAt(userGrid.selectedIndex); (UserGridData = поставщик данных сетки с идентификатором "userGrid"). Но всякий раз, когда я нажимаю кнопку, возникает исключение

RangeError: Index '-1' specified is out of bounds.

person Mr Coder    schedule 23.11.2010    source источник


Ответы (1)


Как насчет того, чтобы кнопка рендеринга вашего элемента отправляла событие, в котором есть выбранные «данные».

dispatchEvent( new DataMonkeyEvent(DataMonkeyEvent.DELETE_ROW, this.data) );  //where "this" is the button and the event should bubble.

прослушайте это событие во внешнем документе и соответствующим образом отредактируйте свои userGridData... invalidateList(), если вы не используете внутренние расширенные поставщики данных, которые прослушивают детей, измененных jive.

Надеюсь, это поможет. --джереми

person jeremy.mooer    schedule 23.11.2010
comment
Я уже пробовал это, интересно, что исключение выдается только для строк с индексом 0 и 1, для остальных это работает хорошо. - person Mr Coder; 23.11.2010
comment
Тогда вам придется показать код. В вашем примере вы не должны ссылаться на deleteCol. Другая проблема заключается в том, что (как говорит ваш код) у вас нет выбранного индекса. Сначала щелкните где-нибудь еще в сетке (столбец электронной почты), а затем используйте кнопку удаления. - person jeremy.mooer; 24.11.2010