Экранирование специальных символов html в столбце таблицы данных

У меня есть datagrid (6 столбцов), в котором отображаются строки из базы данных. Я пытаюсь использовать функцию метки, чтобы избежать специальных символов html в строке (например, & apos, & amp и т. Д.).

Я нашел это в сети:

protected function makeSpecialChars(item:Object,dgName:DataGridColumn):String {
            var s:String = agentName.dataField;
            var v:String = item.s;
            return new XMLDocument(v).firstChild.nodeValue;
        }

Однако когда я это делаю, я получаю сообщение об ошибке: не могу получить доступ к свойству или методу ссылки на нулевой объект.

Это отлично работает, когда я изменяю приведенный выше код следующим образом:

protected function makeSpecialChars(item:Object,agentName:DataGridColumn):String {
            return new XMLDocument(item.computer_name).firstChild.nodeValue;
        }

где имя_компьютера - это поле данных этого столбца таблицы данных.

Размещение кода Datagrid:

<components:DoubleClickDataGrid xmlns:fx="http://ns.adobe.com/mxml/2009" 
                            xmlns:s="library://ns.adobe.com/flex/spark" 
                            xmlns:mx="library://ns.adobe.com/flex/mx" 
                            xmlns:components="components.*"
                            width="100%" height="100%"
                            editable="true" 
                            focusColor="#CEDA9B" 
                            rollOverColor="#CEDA9B" 
                            selectionColor="#84A207"
                            dataProvider="{invList}"
                            creationComplete="doubleclickdatagrid1_creationCompleteHandler(event)"
                            itemEditEnd="handleInventoryEdit(event)">
<components:columns>
    <mx:DataGridColumn width="120" dataField="computer_name" headerText="Computer Name" textAlign="center" labelFunction="makeSpecialChars"/>
    <mx:DataGridColumn dataField="path" headerText="Path" textAlign="center" labelFunction="makeSpecialChars"/>
    <mx:DataGridColumn width="110" dataField="computer_type" textAlign="center" headerText="Computer Type" />
    <mx:DataGridColumn width="180" dataField="username" headerText="Username" textAlign="center" />
    <mx:DataGridColumn width="90" dataField="ip_address" headerText="IP Address" textAlign="center" />
    <mx:DataGridColumn width="130" dataField="mac_address" headerText="MAC Address" textAlign="center" />
    <mx:DataGridColumn width="180" dataField="computer_model" headerText="Computer Model" textAlign="center" />
<mx:DataGridColumn width="70" editable="false" headerText="Actions" textAlign="center" itemRenderer="renderers.ActionRenderer" />
</components:columns>

This much is working fine as of now (applied labelfunction to only 2 columns).. But I want to apply the label function to all the columns ...


person Lin    schedule 09.06.2011    source источник


Ответы (1)


Попробуйте использовать следующее:

protected function makeSpecialChars(item:Object,agentName:DataGridColumn):String {
            var s:String = agentName.dataField;
            var v:String = item[s];
            return new XMLDocument(v).firstChild.nodeValue;
        }
person Constantiner    schedule 09.06.2011
comment
да, я тоже пробовал ... У меня та же ошибка ... на самом деле я так и начал, но так как это не сработало, я попробовал с item.s .. не повезло :( - person Lin; 10.06.2011
comment
В какой строке у вас NPE? Я прав, если он находится в return заявлении? - person Constantiner; 10.06.2011
comment
NPE ?? мой код выглядит именно так, как вы его разместили. .. ничего особенного - person Lin; 10.06.2011
comment
Вы сказали, что у вас есть NPE (исключение нулевого указателя). Невозможно получить доступ к свойству или методу ссылки на нулевой объект. В какой строке это происходит? - person Constantiner; 10.06.2011
comment
да, NPE происходит в операторе возврата. Кроме того, эта ошибка dsnt появляется, когда я применяю функцию метки к 2 столбцам данных. Меньше 2, и ошибка появляется. - person Lin; 10.06.2011
comment
Можете ли вы добавить к вопросу свой DataGrid с кодом столбцов? - person Constantiner; 10.06.2011
comment
Вы должны поместить точку останова в свою функцию метки и увидеть реальное значение v. Есть ли у него первый ребенок и т. Д. - person Constantiner; 13.06.2011